如何使用SimpleMembership获得角色?

时间:2013-12-31 14:07:31

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

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

当我登录用户时,使用以下方式验证:

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

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

在SimpleMembership中,“Roles and UserInRoles”表是否提供注册用户角色,还是可以查询“userInfor”表并从此表中获取角色。

请咨询

先谢谢

2 个答案:

答案 0 :(得分:3)

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

var roles = (SimpleRoleProvider)Roles.Provider;

var allRoles = roles.GetAllRoles();

获取特定用户的角色。

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

ref MSDN

简单会员资格不附带角色的任何开箱即用管理页面。您可以自己创建它们,也可以通过code / sql / ef等直接管理它们。

代码示例......

检查并创建管理员角色:

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

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

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

ref adding-security-and-membership

答案 1 :(得分:0)

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

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

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