ASP.NET 5 Identity - 自定义的SignInManager

12 浏览
0 Comments

ASP.NET 5 Identity - 自定义的SignInManager

我有一个MVC 6项目(vNext),我正在尝试使用ASP.NET Identity。在我的情况下,我不想使用使用EF的内置功能(SignInManager,UserManager,UserStore)。我有一个外部数据库,我只想进行用户名/密码查找并返回有效的cookie。

所以我开始编写自己的类。

在MyUserStore类中,我使用硬编码的用户列表作为存储(仅用于测试目的)。我重写了一些方法,只是为了从硬编码的存储中返回数据。

在这里,我让CheckPasswordAsync和VerifyPasswordAsync方法分别返回true和PasswordVerificationResult.Success,只是为了测试。

MyClaimsPrincipleFactory和MySignInManager类中的方法是为了测试目的,分别返回ClaimsPrincipal对象和SignInResult对象。

在Startup类中,我将所有内容连接在一起。

因为我无法在Startup代码中创建MySignInManager对象以将其添加到DI中(以便稍后在控制器和视图中注入),所以我在MyAccountController中创建它。

在MyAccountController中的MyLogin动作中,我调用PasswordSignInAsync方法,我可以看到我得到了包含编码声明的cookie(来自MyClaimsPrincipleFactory)。

当我尝试调用带有AuthorizeAttribute的其他动作时,我可以看到cookie在请求标头中,但我是未经授权的(更准确地说,因为我没有从Visual Studio示例模板中删除内置的默认ASP.NET Identity身份验证,所以我被重定向到Account/Login)。

这是自定义ASP.NET Identity的正确方法吗?我在这里漏掉了什么吗?

0