0

在我的 Web 应用程序中,我有 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");

现在,这对我不起作用。该事件不会自行触发。就我而言,成功登录后,只有登录页面会自动刷新,并且绝对没有任何反应。

网上有些论坛建议设置ASP.NET的登录控件的DestinationPageURL属性,但我的问题是不能将所有用户重定向到同一个URL,我需要根据角色更改DestinationPageURL。

这是我的用户登录页面:

<%@ 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>

我不知道该怎么做。无论其他论坛建议什么,我之前尝试过的都是一样的,但对我没有用。

4

2 回答 2

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);

首先检查一下并更新它是否有效..

于 2012-04-20T05:10:49.250 回答
0

尝试使用....

string RoleName = Roles.GetRolesForUser("username");
if(RoleName = "Member")
   Response.Redirect("~/Protected/frmMemberHome.aspx");
else if(RoleName = "Admin"))
   Response.Redirect("~/Admin/frmAdminPanel.aspx");
于 2012-04-20T04:08:18.320 回答