【发布时间】:2015-09-22 22:32:02
【问题描述】:
我的User.IsInRole("CanChangeData") 不起作用,但我可以在调试菜单中看到值CanChangeData 在用户的声明列表中。
如果用户无法更改布局中的数据,我想删除菜单,if 返回 false。 Request.IsAuthenticated 返回真。
这就是我在 AuthenticationController 上向用户添加声明的方式
var identity = new ClaimsIdentity(new[] {
new Claim(ClaimTypes.Name, input.Username),
},
DefaultAuthenticationTypes.ApplicationCookie,
ClaimTypes.Name, ClaimTypes.Role);
var employe = db.Employes.Single(k => k.User == input.Username);
foreach (var permission in employe.Role.Permissions)
{
identity.AddClaim(new Claim(ClaimTypes.Role, permission.Nom));
}
为什么User.IsInRole("CanChangeData") 没有收到索赔?
【问题讨论】:
-
角色不是声明。角色在 AspNetRoles 中定义,用户绑定在 AspNetUserRoles 中定义。索赔是不同的。试试
User.HasClaim()。
标签: c# asp.net-mvc owin