使用MVC5身份连接自定义角色

时间:2014-01-17 20:07:14

标签: asp.net-mvc asp.net-identity

我正在使用ASP.Net Identity与ADFS 2.0(我认为)。

用户在单独的服务器上登录,回到我身边,检查ClaimsPrincipal并提取userID声明,然后使用该ID检索用户。

所以我只使用ADFS /基于声明的身份验证来获取用户对象;之后,我有像用户组和角色这样的东西,但它们是自定义对象,我在应用程序中管理它们,而不是使用ADFS来管理它们。

我想知道的是:将自定义数据库角色与开箱即用的角色资源一起使用有多难?具体来说,我希望能够在控制器上使用Role(“RoleName”)属性,并在视图上包含User.IsInRole(“RoleName”)中的一些UI元素以控制用户访问。

我需要做些什么来连接它?

1 个答案:

答案 0 :(得分:3)

我不知道任何角色属性。你的意思是授权(" RoleName")属性?

添加与IPrincipal.IsInRoleAuthorizeAttribute兼容的角色声明非常容易。只需添加ClaimTypes.Role

类型的声明即可
//when creating a new identity
var identity = new ClaimsIdentity(new Claim[] {
     new Claim(ClaimTypes.Role, "MyRole1"),
     new Claim(ClaimTypes.Role, "MyRole2")
});

//add a claim to an identity
identity.AddClaim(new Claim(ClaimTypes.Role, "MyRole3"));

然后在您的控制器中添加AuthorizeAttribute

Authorize("MyRole1")