我正在.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);