无法检测用户角色
Can't Detect User Role
使用 asp.net 和 c# 以及 visual studio 2010
我有一个登录页面和一个登录控件,我正在做一些事情,当用户尝试登录时,它会检测到用户角色。这是我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Security;
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Login1_LoggedIn(object sender, EventArgs e)
{
if (Session["Admin"] != null)
{
Response.Redirect("~/Admin/HomeAdmin.aspx");
}
else if (Session["Professor"] != null)
{
Response.Redirect("~/Professor/HomeProfessor.aspx");
}
else if (Session["Student"] != null)
{
Response.Redirect("~/Student/HomeStudent.aspx");
}
}
protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
{
if (Roles.IsUserInRole("Administor"))
{
Session["Admin"] = Login1.UserName;
//only run for admins
}
else if (Roles.IsUserInRole("Professor"))
{
Session["Professor"] = Login1.UserName;
//only run for professors
}
else if (Roles.IsUserInRole("Student"))
{
Session["Student"] = Login1.UserName;
//only run for students
}
}
}
然后当我登录时它会检测到错误的角色,例如我用管理员用户登录但它会检测为学生!
正如您在代码中看到的那样,它会将我重定向到页面 (HomeStudent.aspx)。
这是我的角色经理的观点:Click here to see the image of my role manager
您认为问题是什么,我该怎么办?!!
事件 LoggingIn
在发布登录表单时触发,但在用户通过身份验证之前(检查 msdn)。
您应该在 LoggedIn
事件上检查 Roles.IsUserInRole("yourRole")
而不是 LoggingIn
。
我找到了解决方案并通过更改代码解决了我的问题:
if (Roles.IsUserInRole(Login1.UserName , "Administor"))
{
Session["Admin"] = Login1.UserName;
Response.Redirect("~/Admin/HomeAdmin.aspx");
//only run for admins
}
else if (Roles.IsUserInRole(Login1.UserName , "Professor"))
{
Session["Professor"] = Login1.UserName;
Response.Redirect("~/Professor/HomeProfessor.aspx");
//only run for professors
}
else if (Roles.IsUserInRole(Login1.UserName , "Student"))
{
Session["Student"] = Login1.UserName;
Response.Redirect("~/Student/HomeStudent.aspx");
//only run for students
}
使用 asp.net 和 c# 以及 visual studio 2010 我有一个登录页面和一个登录控件,我正在做一些事情,当用户尝试登录时,它会检测到用户角色。这是我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Security;
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Login1_LoggedIn(object sender, EventArgs e)
{
if (Session["Admin"] != null)
{
Response.Redirect("~/Admin/HomeAdmin.aspx");
}
else if (Session["Professor"] != null)
{
Response.Redirect("~/Professor/HomeProfessor.aspx");
}
else if (Session["Student"] != null)
{
Response.Redirect("~/Student/HomeStudent.aspx");
}
}
protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
{
if (Roles.IsUserInRole("Administor"))
{
Session["Admin"] = Login1.UserName;
//only run for admins
}
else if (Roles.IsUserInRole("Professor"))
{
Session["Professor"] = Login1.UserName;
//only run for professors
}
else if (Roles.IsUserInRole("Student"))
{
Session["Student"] = Login1.UserName;
//only run for students
}
}
}
然后当我登录时它会检测到错误的角色,例如我用管理员用户登录但它会检测为学生! 正如您在代码中看到的那样,它会将我重定向到页面 (HomeStudent.aspx)。
这是我的角色经理的观点:Click here to see the image of my role manager
您认为问题是什么,我该怎么办?!!
事件 LoggingIn
在发布登录表单时触发,但在用户通过身份验证之前(检查 msdn)。
您应该在 LoggedIn
事件上检查 Roles.IsUserInRole("yourRole")
而不是 LoggingIn
。
我找到了解决方案并通过更改代码解决了我的问题:
if (Roles.IsUserInRole(Login1.UserName , "Administor"))
{
Session["Admin"] = Login1.UserName;
Response.Redirect("~/Admin/HomeAdmin.aspx");
//only run for admins
}
else if (Roles.IsUserInRole(Login1.UserName , "Professor"))
{
Session["Professor"] = Login1.UserName;
Response.Redirect("~/Professor/HomeProfessor.aspx");
//only run for professors
}
else if (Roles.IsUserInRole(Login1.UserName , "Student"))
{
Session["Student"] = Login1.UserName;
Response.Redirect("~/Student/HomeStudent.aspx");
//only run for students
}