【问题标题】:How to get Roles from using SimpleMembership?如何使用 SimpleMembership 获取角色?
【发布时间】:2013-12-31 14:07:30
【问题描述】:

我正在使用 SimpleMembership 开发 MVC4 应用程序。我有一个表 - “userInfo”,我在其中存储用户的信息,例如姓名、电子邮件、地址、电话、角色等。当我注册用户时,数据存储在此表和 pages_Membership 中。没有数据存储在其他成员表(OAuthMembership、Roles、UserInRoles)中。

当我登录一个用户时,它是使用验证的:

if (ModelState.IsValid && WebSecurity.Login(Model.Name, Model.Password, false))

它返回“True”,但在此之后,我需要获取注册用户的角色。

在 SimpleMembership 中,“Roles 和 UserInRoles”表是否提供注册用户角色,或者我可以查询“userInfor”表并从该表中获取角色。

请指教

提前致谢

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-4 simplemembership


    【解决方案1】:

    获取所有可用角色,假设您已启用角色并添加了至少一个..

    var roles = (SimpleRoleProvider)Roles.Provider;
    
    var allRoles = roles.GetAllRoles();
    

    获取特定用户的角色。

    var userRoles = roles.GetRolesForUser("specificusername");
    

    参考MSDN

    Simple Membership 不附带任何现成的角色管理页面。你可以自己创建,或者直接通过code/sql/ef等管理。

    代码示例...

    检查和创建管理员角色:

    if (!Roles.RoleExists("Admin"))
         Roles.CreateRole("Admin");
    

    在创建时将用户添加到角色:

    if (!Roles.GetRolesForUser("specificusername").Contains("Admin"))
         Roles.AddUsersToRoles(new[] {"specificusername"}, new[] {"Admin"});
    

    参考adding-security-and-membership

    【讨论】:

    • 是的,我在 Web.Config 文件中启用了角色。你能告诉我如何添加角色。当我注册一个新用户时,没有在 pages_roles 表中创建任何角色。是否有不同的方法来添加角色?
    • 互联网模板生成的默认代码不会自动为新用户添加角色。您必须为其添加代码。尝试查看 SimpleRoleProvider 文档 msdn.microsoft.com/en-us/library/… 。您可以使用 CreateRole 方法添加角色,并使用 AddUsersToRoles 方法将其映射到用户。
    【解决方案2】:

    您的用户登录后,您可以使用Roles.GetRolesForUser Method

    获取当前登录用户所在角色的列表。

    或者如果您想检查当前用户是否处于指定角色,您可以使用Roles.IsUserInRole Method

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 2017-12-22
      相关资源
      最近更新 更多