将自定义SignInResults添加到从SignInManager返回的内容 PasswordSignInAsync
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将自定义SignInResults添加到从SignInManager返回的内容 PasswordSignInAsync相关的知识,希望对你有一定的参考价值。
我想保证所有登录的用户都签署了我们的EULA,对我而言,它与内置的SignInResult.TwoFactorRequired
类似,因为我想在完成登录之前完成他们的EULA签名流程。有没有人知道任何资源,显示如何创建自定义SignInResult
,以便我的身份服务器的所有用户必须遵循相同的登录规则?
我实施了一个自定义的SignInManager
,但PasswordSignInAsync
仍然返回一个具体的SignInResult
,我不确定是否有可能在那里楔入我想要的额外状态。
是的,你不能仅仅覆盖PasswordSignInAsync
,但你可以创建一个返回你的自定义结果类的新方法,并简单地将实际登录部分交给PasswordSignInAsync
。
但是,当您完成创建派生类型,使用自定义方法和状态,以及引导所有内容时,只需在登录后读取用户的值就可以更简单,更直接,并做出相应的反应。例如,您可以(并且可能应该)将EULA接受设置为对用户的声明。然后,您可以执行以下操作:
// sign in user
if (User.FindFirstValue("eula") == null)
{
return Redirect("/eula");
}
更好的是,您可以创建一个自定义操作筛选器来检查用户是否经过身份验证,如果是,则检查他们是否拥有声明。如果没有,那么您将重定向到您的EULA接受页面。然后可以在Startup.cs
中将该动作过滤器设置为全局,您甚至不需要再考虑它了。
以上是关于将自定义SignInResults添加到从SignInManager返回的内容 PasswordSignInAsync的主要内容,如果未能解决你的问题,请参考以下文章
如何将自定义挂钩添加到 Woocommerce 的自定义插件