我正在.NET MVC 5应用程序中工作。我不想使用 Entity Framework 。我想对RavenDB数据库进行身份验证。在我看来,我想替换帐户 Controller 随附的UserManager。我认为我可以重写所有UserManager函数以使用我的数据库,除非我不了解ClaimsIdentity对象。

SignInAsync方法中,有一个对UserManager.CreateIdentityAsync(...)的调用。我知道它会返回一个ClaimsIdentity对象。我不知道如何自行创建ClaimsIdentity对象。

我看到它具有4个属性ActorBootstrapContextClaimsLabel。我不知道这些属性的用途,也不知道如何正确生成它们。我认为正确生成它们很重要,因为这是制作身份验证Cookie的方式。

我查看了ClaimsIdentity对象here的解释,但这并没有真正帮助我理解。

如果我可以看到CreateIdentityAsync()的代码,那可能会有所帮助。

如果我要解决所有这些错误,请告诉我。否则,如果有人可以指出如何生成ClaimsIdentity对象,那将很有帮助。

ClaimsIdentity identity = new ClaimsIdentity
{
    Actor = ????,
    BootstrapContext = ?????,
    Claims = ?????,
    Label = ?????
}

最佳答案

也许following link可以帮助您:

var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, "Brock"));
claims.Add(new Claim(ClaimTypes.Email, "[email protected]"));
var id = new ClaimsIdentity(claims,DefaultAuthenticationTypes.ApplicationCookie);

var ctx = Request.GetOwinContext();
var authenticationManager = ctx.Authentication;
authenticationManager.SignIn(id);

关于authentication - 如何为Asp.NET MVC 5创建ClaimsIdentity对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20391592/

10-12 13:40