asp.net-core - 将自定义 SignInResults 添加到从 SignInManager 返回的内容中PasswordSignInAsync
问题描述
我想保证我所有登录的用户都签署了我们的 EULA,对我来说,它类似于内置的SignInResult.TwoFactorRequired
,因为我想在完成登录之前让他们完成 EULA 签署过程。有谁知道任何显示如何创建自定义的资源,SignInResult
以便我的身份服务器的所有用户在登录时都必须遵循相同的规则?
我会实现一个 custom SignInManager
,但PasswordSignInAsync
仍然返回一个具体的SignInResult
,我不确定是否可以在那里插入我想要的其他状态。
解决方案
是的,您不能只PasswordSignInAsync
覆盖PasswordSignInAsync
.
但是,当您完成创建派生类型、使用自定义方法和状态并引导所有内容时,在登录后从用户那里读取值并做出相应反应可能会更简单、更直接。例如,您可以(并且可能应该)将 EULA 接受设置为对用户的声明。然后,您可以执行以下操作:
// sign in user
if (User.FindFirstValue("eula") == null)
{
return Redirect("/eula");
}
更好的是,您可以创建一个自定义操作过滤器来检查用户是否经过身份验证,如果是,他们是否拥有声明。如果没有,那么您将重定向到您的 EULA 接受页面。然后该动作过滤器可以全局化Startup.cs
,您甚至不需要再考虑它了。
推荐阅读
- node.js - Docker - 撰写我无法创建 postgress 服务器
- php - Phalcon 3.4: Inject a component in a controller action without using dispatcher events
- postgresql - 如何配置从 Vanilla Postgresql 9.6 DB 到 AWS RDS Postgresql 的流复制
- android - 实时数据中的两个对象相互引用
- java - 如何以正确的方式制作高负载 Java 应用程序?
- python - cv2.imwrite 没有写入正确的像素值
- c++ - 为什么擦除其他字符时最后一个字符会加倍,如何防止?
- python - 使用 Pipenv 搜索 Facebook 广告的 Python 脚本
- javascript - 选中复选框时无法使用 JS 将 CSS 应用于输入字段
- javascript - How to list all indexes of Mongo Collection with MongoDB Node native?