将自定义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 的自定义插件

将自定义标头添加到 AFNetworking,我做错了啥?

将自定义标记 (HTMLMarkers) 添加到聚类

AWS Elastic Beanstalk:将自定义日志添加到 CloudWatch?

将自定义 QWidget 添加到 QListWidget