非常感谢有关此主题的帮助:
我正在尝试使用自己的角色,就像我在MVC4(自定义成员资格)上所做的那样。 [授权(roles =“Admin”)]为某些控制器。 我对新身份的事情有点困惑。
稍后,我还需要为API控制器使用相同的角色。
有人可以用最简单的方式解释如何实现以下目标:
我已经阅读了有关自定义的内容,但它似乎太复杂了。
任何人都有一个简单的例子,说明如何使用它简单明了?
由于
答案 0 :(得分:2)
我这样做:
// Just for Reference
public interface IUserIdentity
{
Guid UserId { get; set; }
string UserName { get; set; }
}
传入包含您角色的列表..
List<Claim> claims = new List<Claim>();
claims.Add(new Claim(ClaimType.Role,“Admin”));
public ClaimsIdentity CreateIdentity(IUserIdentity user, IEnumerable<Claim> claims, string authenticationType)
{
var identity = new ClaimsIdentity(claims, authenticationType);
identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.UserId.ToString()));
identity.AddClaim(new Claim(ClaimTypes.Name, user.UserName));
return identity;
}
如果您使用的是ASP.NET Identiy,则可以轻松完成。 “开箱即用”的会员资格仍然很糟糕。
答案 1 :(得分:1)
如果您已经拥有自己的身份系统,那么使用ASP.NET身份的原因是什么?你需要索赔支持吗?
ASP.NET Identity可以完成您描述的所有事情,但很难将其集成到现有的成员资格系统中(因为ASP.NET身份是作为ASP.NET平台上现有成员资格框架的替代而开发的)。你的角色系统是否特别,f.e。是否集成了任何业务规则?如果没有,那么将角色系统转换为ASP.NET身份提供的角色系统应该不难。
我将尝试从ASP.NET身份的角度回答您的观点: