身份验证 – 如何为Asp.NET MVC 5创建ClaimsIdentity对象?

我正在.NET MVC 5应用程序中工作。我不想使用实体框架。我想要验证一个RavendB数据库。对我来说,我想替换帐户控制器附带的UserManager。我想我可以重写所有的UserManager函数来处理我的数据库,除非我不明白ClaimIdentity对象。

在SignInAsync方法中,调用UserManager.CreateIdentityAsync(…)。我知道它返回ClaimsIdentity对象。我不知道的是如何自己创建ClaimsIdentity对象。

我看到它有4个属性Actor,BootstrapContext,Claims和Label。我不知道这些属性是用于什么,我不知道如何正确地生成它们。我认为正确生成它们是重要的,因为它是如何进行认证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,"brockallen@gmail.com"));
var id = new ClaimsIdentity(claims,DefaultAuthenticationTypes.ApplicationCookie);

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

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...