c# - 带有 OAuth2 的 ASP.NET Web API - 使用双因素身份验证时为 "Remember this browser"

标签 c# .net asp.net-mvc asp.net-web-api asp.net-identity

在 ASP.NET MVC 5 的默认模板中,使用双因素身份验证登录时可以选择“记住此浏览器”。

在 ASP.NET MVC 中,这涉及在 Startup.Auth.cs 中配置 app.UseTwoFactorRememberBrowserCookie();,然后使用 SignInManager.TwoFactorSignInAsync()isPersistent: true

我想完成同样的事情,但使用 ASP.NET Web API 和 OAuth2 Bearer Tokens。

即我希望用户能够注销(或自动注销)。但下次使用同一浏览器登录时,用户只需提供密码,无需双重身份验证。

我将如何使用 OAuth2 Bearer Tokens 实现此类行为?

最佳答案

好吧,我认为这是客户端的问题,我想将您的问题改写为“在客户端存储身份验证 token 的最佳位置是什么?”

你有几个选择:

  1. HTML5 网络存储(localStorage 或 sessionStorage)
  2. cookies

使用选项一,当标签页/浏览器关闭时, token 仍然有效,下次您会自动登录。

$window.sessionStorage.setItem('userInfo-token', 'tokenData');

使用选项二,您可以将 token 保存到 cookie 中,并在您要向服务器发送请求时检索它。

当然这两种选择各有利弊,有关更多信息,我建议您阅读Where to Store your JWTs – Cookies vs HTML5 Web Storage

关于c# - 带有 OAuth2 的 ASP.NET Web API - 使用双因素身份验证时为 "Remember this browser",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42003333/

相关文章:

c# - 如何使用 Fluent Assertion 比较因属性而异的两个集合?

c# - 在 c# Specflow 中断言 Json 输出

c# - 为什么 ThreadPool 线程不打印任何内容到控制台,除非主线程先打印

javascript - 在 jQuery 中设置下拉菜单的值时,.change 函数会被调用吗?

asp.net-mvc - ASP.Net MVC : Html. Display() 用于集合中的对象

c# - SessionManager 和 Session 随机为 null

c# - 如何播放即使您在 Xamarin Forms 中浏览页面也能继续播放的音频文件?

c# - 在单个事务中发送多个 SQL 命令

c# - Rhino 模拟期望

asp.net - 向通过 Google OAuth2 创建的用户添加角色或声明