2017-12-23 7 views
1

における役割に応じて異なるページをリダイレクトするが、認証メンバーシップとロールマネージャーに関するすべての情報が含まれていはasp.net

This Image show the My Project Folder Admin, User and Customer

メインWeb.Configファイルこの問題を解決する方法を働いていない

<authentication mode="Forms"> 
    <forms cookieless="UseCookies" path="/" 

    loginUrl="Login/default.aspx" protection="All" timeout="30"> 
    </forms> 
</authentication> 

<membership defaultProvider="Demo_MemberShipProvider"> 
    <providers> 
    <add name="Demo_MemberShipProvider" 

     type="System.Web.Security.SqlMembershipProvider" 

     connectionStringName="cs" 

     enablePasswordRetrieval="false" 

     enablePasswordReset="true" 

     requiresQuestionAndAnswer="true" 

     applicationName="/" 

     requiresUniqueEmail="false" 

     passwordFormat="Hashed" 

     maxInvalidPasswordAttempts="5" 

     minRequiredPasswordLength="5" 

     minRequiredNonalphanumericCharacters="0" 

     passwordAttemptWindow="10" passwordStrengthRegularExpression=""/> 
    </providers> 
</membership> 

<roleManager enabled="true" cacheRolesInCookie="true" 

cookieName="TBHROLES" defaultProvider="Demo_RoleProvider"> 
    <providers> 
    <add connectionStringName="cs" 

    applicationName="/" name="Demo_RoleProvider" 

    type="System.Web.Security.SqlRoleProvider, System.Web, 
       Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
    </providers> 
</roleManager> 



     <!--Admin Web.Config--> 
    <authorization> 
    <allow roles="Admin" /> 
    <deny roles="User, Customer"/> 
    <deny users="?"/> 
    </authorization> 
    <!--Customer Web.Config--> 
    <authorization> 
    <allow roles="Admin, User, Customer" /> 
    <deny users="?"/> 
    </authorization> 
    <!--User Web.Config--> 
    <authorization> 
    <allow roles="Admin, User" /> 
    <deny roles="Customer"/> 
    <deny users="?"/> 
    </authorization> 

これは、ログインのためのログインボタンコードである

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) 
{ 
    if (Membership.ValidateUser(Login1.UserName, Login1.Password) == true) 
    { 
     Login1.Visible = true; 
     Session["user"] = User.Identity.Name; 
     FormsAuthentication.RedirectFromLoginPage(Login1.UserName, true); 
    } 
    else 
    { 

     Response.Write("Invalid Login"); 
    } 
} 

答えて

0
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) 
    { 
     if (Membership.ValidateUser(Login1.UserName, Login1.Password) == true) 
     { 
      Login1.Visible = true; 
      Session["user"] = User.Identity.Name; 

      var userRoles = Roles.GetRolesForUser(Login1.UserName); 
      var userIdentity = new GenericIdentity(Login1.UserName); 
      var principal = new GenericPrincipal(userIdentity, userRoles); 

      Context.User = principal; 

      if (User.IsInRole("Admin")) 
       Response.Redirect("~/ThePageForAdmin"); 

      if (User.IsInRole("User")) 
       Response.Redirect("~/ThePageForUser"); 

      if (User.IsInRole("Customer")) 
       Response.Redirect("~/ThePageForCustomer"); 
     } 
     else 
     { 

      Response.Write("Invalid Login"); 
     } 
    } 
+0

このエラーが発生しました\t型または名前空間の名前 'GenericPrincipal'が見つかりませんでした(使用するディレクティブまたはアセンブリ参照がありませんか?) –

+0

返信いただきありがとうございますが、ログインページユーザーの役割に応じてページをリダイレクトしない –

+0

本当にありがとう –