Asp.net core 在ASP.NET 5中实现自定义身份验证提供程序

Asp.net core 在ASP.NET 5中实现自定义身份验证提供程序,asp.net-core,asp.net-core-1.0,Asp.net Core,Asp.net Core 1.0,我试图在ASP.NET5上实现我自己版本的JWT承载身份验证,而不参考任何现有的JWT令牌处理程序类。我的练习是理解身份验证和授权的内部机制 我有一个项目要做。看到了。JWT令牌代码位于单独的程序集中-SimpleJwtAuth。它可以通过用户登录和密码生成令牌。但我对认证有疑问。我从AuthenticationHandler继承,它可以返回AuthenticationResult.失败的或AuthenticationResult.成功的和AuthenticationTicket 问题是我看不出

我试图在ASP.NET5上实现我自己版本的JWT承载身份验证,而不参考任何现有的JWT令牌处理程序类。我的练习是理解身份验证和授权的内部机制

我有一个项目要做。看到了。JWT令牌代码位于单独的程序集中-
SimpleJwtAuth
。它可以通过用户登录和密码生成令牌。但我对认证有疑问。我从
AuthenticationHandler
继承,它可以返回
AuthenticationResult.失败的
AuthenticationResult.成功的
AuthenticationTicket

问题是我看不出这个
AuthenticationTicket
如何让用户登录。我应该自己调用
SignInManager.SignInAsync
,还是忘记设置任何参数来自动实现这一点


举个例子:我认为开发人员有责任让用户登录。这让我觉得我应该做类似的事情。但是-为什么我们需要
AuthenticateResult
和它的票证呢?

您认为开发者在哪里有责任登录


SignInManager
是标识包的一部分。如果您没有将标识包与cookie身份验证结合使用,则不需要调用它。返回“代码>身份验证结果。成功/<代码>用一个票证就足以在当前请求上放置一个<代码>主体< /代码>,这是登录的有效方式。

考虑用户登录,我需要填写所有的声明和属性。起初,我认为一定有一些内部逻辑可以从最小的声明集扩展用户对象。比如,如果我返回的票证主体只包含nameidentifier声明,它会自动按id获取整个对象。显然,情况并非如此。使用UserManager按id获取用户对象,并根据需要将其与票证一起返回。我只是想澄清一下这是不是正确的方法。哦,我明白了,你是在勾引身份。然后,是的,无论如何要呼叫SignInManager.SignIn。这也会更新上次登录字段,但仅当您使用identity作为用户存储时才需要它,如果您不使用identity,则中间件不需要它。