我正在使用ASP.Net Identity与ADFS 2.0(我认为)。
用户在单独的服务器上登录,回到我身边,检查ClaimsPrincipal并提取userID声明,然后使用该ID检索用户。
所以我只使用ADFS /基于声明的身份验证来获取用户对象;之后,我有像用户组和角色这样的东西,但它们是自定义对象,我在应用程序中管理它们,而不是使用ADFS来管理它们。
我想知道的是:将自定义数据库角色与开箱即用的角色资源一起使用有多难?具体来说,我希望能够在控制器上使用Role(“RoleName”)属性,并在视图上包含User.IsInRole(“RoleName”)中的一些UI元素以控制用户访问。
我需要做些什么来连接它?
答案 0 :(得分:3)
我不知道任何角色属性。你的意思是授权(" RoleName")属性?
添加与IPrincipal.IsInRole
和AuthorizeAttribute
兼容的角色声明非常容易。只需添加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")