在我的网络应用程序中,我有2个用户和2个角色。我想根据角色将用户重定向到不同的页面。
我将以下代码用于Login_LoggedIn事件处理程序:
if(Roles.IsUserInRole(Login.UserName,"Member"))
Response.Redirect("~Protected/frmMemberHome.aspx");
else if(Roles.IsUserInRole(Login.UserName,"Admin"))
Response.Redirect("~Admin/frmAdminPanel.aspx");
现在,这对我不起作用。事件不会自行解雇。在我的情况下,成功记录后,只会自动刷新登录页面,绝对没有任何反应。
Internet上的一些论坛建议设置ASP.NET登录控件的DestinationPageURL属性,但我的问题是我无法将所有用户重定向到同一个URL,我需要根据角色更改DestinationPageURL。
这是我的UserLogin页面:
<%@ Page Title="" Language="C#" MasterPageFile="~/mainLayout.Master" AutoEventWireup="true" CodeBehind="frmUserLogin.aspx.cs" Inherits="OnlineTMS_MIST.frmUserLogin" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:Login ID="Login" runat="server"
DisplayRememberMe="False">
</asp:Login>
</asp:Content>
我不知道该怎么做。无论其他论坛建议的是我以前尝试过的同样的事情,但不适合我。
答案 0 :(得分:1)
比较您的登录控制标记和我的。
<asp:Login ID="Login" runat="server"
DisplayRememberMe="False">
</asp:Login>
这是我的:
<asp:Login ID="Login1" runat="server" DisplayRememberMe ="true"
onloggedin="Login1_LoggedIn">
</asp:Login>
我认为你没有将事件与事件处理程序绑定。此部分在您的标记中缺少onloggedin="Login1_LoggedIn"
。如果您在Page_Init事件上完成了:
Login1.LoggedIn +=new EventHandler(Login1_LoggedIn);
先检查一下,然后更新是否有效..
答案 1 :(得分:0)
尝试使用....
string RoleName = Roles.GetRolesForUser("username");
if(RoleName = "Member")
Response.Redirect("~/Protected/frmMemberHome.aspx");
else if(RoleName = "Admin"))
Response.Redirect("~/Admin/frmAdminPanel.aspx");