2013-07-15 109 views
0

这似乎应该是如此简单,但即使淘计算器后,我无法弄清楚。将用户重定向到页面,根据自己的角色

我有一个非常标准的登录控制:

<asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false"> 
<LayoutTemplate> 
    <span class="failureNotification"> 
     <asp:Literal ID="FailureText" runat="server"></asp:Literal> 
    </span> 
    <asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failureNotification" 
     ValidationGroup="LoginUserValidationGroup"/> 
    <div class="accountInfo"> 
     <fieldset class="login"> 
      <legend>Account Information</legend> 
      <p> 
       <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Username:<span class="required"> *</span></asp:Label> 
       <asp:TextBox ID="UserName" runat="server" CssClass="textEntry"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" 
        CssClass="failureNotification" ErrorMessage="User Name is required." ToolTip="User Name is required." 
        ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator> 
      </p> 
      <p> 
       <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:<span class="required"> *</span></asp:Label> 
       <asp:TextBox ID="Password" runat="server" CssClass="passwordEntry" TextMode="Password"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" 
        CssClass="failureNotification" ErrorMessage="Password is required." ToolTip="Password is required." 
        ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator> 
      </p> 
      <p> 
       <asp:CheckBox ID="RememberMe" runat="server" /> 
       <asp:Label ID="RememberMeLabel" runat="server" AssociatedControlID="RememberMe" CssClass="inline">Keep me logged in</asp:Label> 
      </p> 
     </fieldset> 
     <p class="submitButton"> 
      <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="LoginUserValidationGroup"/> 
     </p> 
     <p><asp:HyperLink ID="ResetLink" runat="server" NavigateUrl="~/ResetPassword.aspx">Forgot password?</asp:HyperLink></p> 
    </div> 
</LayoutTemplate> 

用下面是我的代码隐藏:

Protected Sub LoginUser_LoggedIn(sender As Object, e As System.EventArgs) Handles LoginUser.LoggedIn 
     If User.IsInRole("SuperAdmins") Then 
      Me.LoginUser.DestinationPageUrl = "~/Staff/Default.aspx" 
     ElseIf User.IsInRole("Admins") Then 
      Me.LoginUser.DestinationPageUrl = "~/Admin/Default.aspx" 
     ElseIf User.IsInRole("Teachers") Then 
      Me.LoginUser.DestinationPageUrl = "~/Teacher/Default.aspx" 
     ElseIf User.IsInRole("Providers") Then 
      Me.LoginUser.DestinationPageUrl = "~/Provider/Default.aspx" 
     Else 
      Me.LoginUser.DestinationPageUrl = "~" 
     End If 
    End Sub 

目前,我总是重定向到 “〜” 连尽管我以SuperAdmin身份登录。我确定我在错误的地方检查'IsInRole',但我不知道该在哪里做。我重定向后,我确实登录。

这是我的第一个“问题”,所以希望我提供正确的信息。

更多信息......下面代码没有工作:

Protected Sub LoginUser_LoggedIn(sender As Object, e As System.EventArgs) Handles LoginUser.LoggedIn 
If (Roles.IsUserInRole(LoginUser.UserName, "SuperAdmins")) Then 
    Me.LoginUser.DestinationPageUrl = "~/Staff/Default.aspx" 
ElseIf (Roles.IsUserInRole(LoginUser.UserName, "Admins")) Then 
    Me.LoginUser.DestinationPageUrl = "~/Admin/Default.aspx" 
ElseIf (Roles.IsUserInRole(LoginUser.UserName, "Teachers")) Then 
    Me.LoginUser.DestinationPageUrl = "~/Teacher/Default.aspx" 
ElseIf (Roles.IsUserInRole(LoginUser.UserName, "Providers")) Then 
    Me.LoginUser.DestinationPageUrl = "~/Provider/Default.aspx" 
Else 
    Me.LoginUser.DestinationPageUrl = "~" 
End If 

末次

回答

0

它是SuperAdminSuperAdmins

你有没有把一个破发点上的逻辑条件片,证实User是什么,你认为它应该是什么?

0

使用身份验证事件,而不是的loggedIn。

相关问题