2012-04-20 81 views
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"); 

現在,這並不爲我工作。該事件不會自行啓動。在我的情況下,成功的日誌記錄後,只有登錄頁面自動刷新,絕對沒有任何反應。

Internet上的一些論壇建議設置ASP.NET的Login Control的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> 

我不知道,該怎麼做。無論其他論壇的建議是什麼,我曾嘗試,但沒有爲我工作。

+0

的代碼應該工作。剛剛看到爲什麼LoggedIn事件沒有觸發。 – 2012-04-20 04:10:50

+0

可能這個職位可以幫助你http://forums.asp.net/p/1458476/3345327.aspx – 2012-04-20 04:20:43

+0

我不知道,爲什麼它不是射擊... – jchoudhury 2012-04-20 04:21:01

回答

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

Firtly檢查並更新是否工作或不..

+0

非常感謝,它終於運作... – jchoudhury 2012-04-21 01:54:38

0

嘗試使用....

string RoleName = Roles.GetRolesForUser("username"); 
if(RoleName = "Member") 
    Response.Redirect("~/Protected/frmMemberHome.aspx"); 
else if(RoleName = "Admin")) 
    Response.Redirect("~/Admin/frmAdminPanel.aspx"); 
+0

您的代碼與OP發佈的 – 2012-04-20 04:12:15

+0

不起作用。你的代碼和我試過的一樣。 – jchoudhury 2012-04-20 04:16:34