Ali*_*ori 13 c# asp.net asp.net-mvc asp.net-identity
我正在开发一个使用Asp.Net MVC 5和Asp.Net Identity的项目,我正在使用双因素身份验证.对于我使用的登录:
var result = await SignInManager.TwoFactorSignInAsync(model.Provider, model.Code, isPersistent: model.RememberMe, rememberBrowser: model.RememberBrowser);
这是新项目附带的默认代码.但是,我还需要用户"信任"或"记住"浏览器的能力,类似于银行如何指示这是否是您第一次从特定浏览器/ PC登录.
我的问题是RememberBrowser关于登录方法的属性以及.NET Identity对此数据的处理方式.我想要保存的浏览器列表以及撤销对其中一个/全部或所有浏览器的访问权限的能力.这在Identity框架内是否可行?另外,我可以通过某种类型的查找来判断浏览器是否已被"信任"吗?
也许将浏览器信息保存在数据库中并检查登录而不是cookie是个好主意?这样它就可以显示为能够删除它的列表.我正在寻找的是如何保存以及如何将其与Asp.Net标识集成而不存在安全风险.
也许这可以作为身份验证的另一个步骤来实现.所以基本上我们将有一个3因素身份验证:
所以我猜测应该添加一个新的cookie来保存浏览器的信息.但是,我们应该能够使此cookie与2FA cookie一起失效.
不确定保存浏览器信息是否会增加价值,因为浏览器信息对于不同用户(使用相同的浏览器和版本)来说是相同的,除非您也保存请求者 IP;并且保存请求者IP有太多的复杂性。
如果用户已设置,则向令牌添加自定义声明,RememberBrowser然后根据此自定义声明执行逻辑怎么样?例如,设置自定义声明并为其your_claim_name设置 a (如果为 true)。还将用户名、该 guid 和状态标志保存在数据库中。当请求到来时,检查您的自定义声明是否存在,如果存在,则使用自定义声明值和用户名查询表以检查该条目是否仍然有效。Guid.NewGuid()RememberBrowser
您可以删除该条目或软删除(设置状态)用户的条目,以便在下一个请求到来时您可以执行所需的逻辑。
| 归档时间: |
|
| 查看次数: |
964 次 |
| 最近记录: |