0

RoleManager を使用するのはこれが初めてで、ロールにユーザー名を追加する際に問題が発生しています。目標は、(現在ログインしている) ユーザーが管理者であるかどうか ( isAdmin = 1SQL データベース内) を確認することです。私が LoginController で使用しているのは次のとおりです。

var usr = db.Users.Where(u => u.UserName.ToLower() == userLogin.UserName.ToLower() && 
u.Password.Equals(userLogin.Password, StringComparison.Ordinal)).FirstOrDefault();

if (usr != null)
{
   FormsAuthentication.SetAuthCookie(usr.UserName, false);
   if (usr.IsAdmin == true)
   {
      if(!Roles.RoleExists("Admin"))
           Roles.CreateRole("Admin");
           var x = Roles.GetAllRoles();
           if(!Roles.IsUserInRole(usr.UserName, "Admin"))
               Roles.AddUserToRole(usr.UserName, "Admin");
    }
    return RedirectToAction("Index", "Home");
}

これらの各行にブレークポイントを設定しましたがRoles.CreateRole("Admin");、到達することはありません。これは、「管理者」という役割があることを意味します。ただし、var x = Roles.GetAllRoles();常に null が表示されます。

if(!Roles.IsUserInRole(usr.UserName, "Admin"))常に到達するため、ユーザーは現在そのロールに割り当てられていませんが、次の行に ProviderException が表示され、次の追加情報が表示されます:「ユーザー "_username" が見つかりませんでした。

誰かがそれを必要とする場合の私の Web Config:

<roleManager enabled="true" defaultProvider="MyRoleProvider">
  <providers>
    <clear />
    <add name="MyRoleProvider" type="System.Web.Providers.DefaultRoleProvider" 
    connectionStringName="StoreFrontConnectionString" applicationName="/"/>
  </providers>
</roleManager>

どんな助けでも大歓迎です。

4

1 に答える 1