我创建了3个文件夹来管理ASP中的用户。NET和我还创建了3个角色,分别是officer, user和admin。现在基于下面的代码用户可以重定向到特定的页面,但现在的问题是,我不能看到登录后使用loginName和LoginStatus自动从注销更改为登录的用户名。用户似乎没有登录,要求重新登录。(有趣的问题…)
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
if (Membership.ValidateUser(Login1.UserName, Login1.Password))
{
//Perform setting cookie information
e.Authenticated = true;
if (Roles.IsUserInRole(Login1.UserName, "r_admin"))
{
Response.Redirect("admin/default.aspx");
}
if (Roles.IsUserInRole(Login1.UserName, "r_officer"))
{
Response.Redirect("~/officer/default.aspx");
}
if (Roles.IsUserInRole(Login1.UserName, "r_user"))
{
Response.Redirect("~/user/default.aspx");
}
}
尝试移动响应。将指令重定向到LoggedIn事件,而不是Authenticate事件。
在您的登录控件上添加Loggedin事件,像这样:
<asp:Login id="Login1" runat="server" OnLoggedIn="Login1_OnLoggedIn"></asp:Login>
和后面的代码:
protecetd void Login1_OnLoggedIn(object sender, EventArgs e)
{
if (Roles.IsUserInRole(Login1.UserName, "r_admin"))
{
Response.Redirect("admin/default.aspx");
}
if (Roles.IsUserInRole(Login1.UserName, "r_officer"))
{
Response.Redirect("~/officer/default.aspx");
}
if (Roles.IsUserInRole(Login1.UserName, "r_user"))
{
Response.Redirect("~/user/default.aspx");
}
}
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.login.loggedin.aspx