登录用户在“索引”页面中的角色

时间:2023-02-07 12:48:20

I would like to run the following code in Index controller

我想在索引控制器中运行以下代码

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

I got an exception at GetRolesForUser when the Index page loads especially when the User is not null (the user is online/logged in)

当Index页面加载时,GetRolesForUser出现异常,特别是当User不为null(用户在线/登录)时

The exception asks me to call WebSecurity's InitializeRoles in _appStart.cshtml file

该异常要求我在_appStart.cshtml文件中调用WebSecurity的InitializeRoles

2 个解决方案

#1


1  

The Controller.User property will never be null. When a user is not logged in, User will still reference an IPrincipal instance. However, User.Identity.Name will be equal to an empty string. Also, User.IsAuthenticated will equal false.

Controller.User属性永远不会为null。当用户未登录时,用户仍将引用IPrincipal实例。但是,User.Identity.Name将等于空字符串。此外,User.IsAuthenticated将等于false。

Try this:

尝试这个:

public ActionResult Index()
{
    if (User.IsInRole("administrator"))
    {
        // do something
    }
    return View();
}

#2


0  

If you haven't already, you have to enable rolemanager in web.config.

如果您还没有,则必须在web.config中启用rolemanager。

See this post: https://*.com/a/12980969/1502563

看到这篇文章:https://*.com/a/12980969/1502563

Snippet from linked answer below:

来自以下链接答案的片段:

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

Oh and of course - you need to create the role administrator too.

哦,当然 - 你也需要创建角色管理员。

See these links on some ways to do it from scratch:

从头开始,可以通过以下方式查看这些链接:

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

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/

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

#1


1  

The Controller.User property will never be null. When a user is not logged in, User will still reference an IPrincipal instance. However, User.Identity.Name will be equal to an empty string. Also, User.IsAuthenticated will equal false.

Controller.User属性永远不会为null。当用户未登录时,用户仍将引用IPrincipal实例。但是,User.Identity.Name将等于空字符串。此外,User.IsAuthenticated将等于false。

Try this:

尝试这个:

public ActionResult Index()
{
    if (User.IsInRole("administrator"))
    {
        // do something
    }
    return View();
}

#2


0  

If you haven't already, you have to enable rolemanager in web.config.

如果您还没有,则必须在web.config中启用rolemanager。

See this post: https://*.com/a/12980969/1502563

看到这篇文章:https://*.com/a/12980969/1502563

Snippet from linked answer below:

来自以下链接答案的片段:

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

Oh and of course - you need to create the role administrator too.

哦,当然 - 你也需要创建角色管理员。

See these links on some ways to do it from scratch:

从头开始,可以通过以下方式查看这些链接:

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

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/

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