0

インデックス コントローラーで次のコードを実行したい

public ActionResult Index()
{
    if(User!=null)
    {
        if(0==(Roles.GetRolesForUser(username).ToList().Contains("administrator")))
        {
            //do something
        }
    }
    return View();
}

GetRolesForUser特にUserが null でない場合 (ユーザーがオンライン/ログインしている場合) 、インデックス ページの読み込み時に例外が発生しました。

例外WebSecurity's InitializeRolesにより、_appStart.cshtml ファイルを呼び出すように求められます

4

2 に答える 2

1

Controller.Userプロパティが null になることはありません。ユーザーがログインしていない場合Userでも、IPrincipalインスタンスを参照します。ただし、User.Identity.Name空の文字列と等しくなります。また、User.IsAuthenticatedと等しくなりfalseます。

これを試して:

public ActionResult Index()
{
    if (User.IsInRole("administrator"))
    {
        // do something
    }
    return View();
}
于 2013-02-22T12:12:34.483 に答える
0

まだ有効にしていない場合は、web.config で rolemanager を有効にする必要があります。

この投稿を参照してください: https://stackoverflow.com/a/12980969/1502563

以下のリンクされた回答のスニペット:

<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <clear/>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" 
         type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/>
  </providers>
</membership> 

ああ、もちろん - ロール管理者も作成する必要があります。

最初から行う方法については、次のリンクを参照してください。

http://odetocode.com/blogs/scott/archive/2012/09/05/seeding-membership-amp-roles-in-asp-net-mvc-4.aspx

http://blog.longle.net/2012/09/25/seeding-users-and-roles-with-mvc4-simplemembershipprovider-simpleroleprovider-ef5-codefirst-and-custom-user-properties/

于 2013-02-22T12:52:55.720 に答える