登录后重定向到其他页面

时间:2012-04-20 04:02:56

标签: asp.net

在我的网络应用程序中,我有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>

我不知道该怎么做。无论其他论坛建议的是我以前尝试过的同样的事情,但不适合我。

2 个答案:

答案 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");