我有以下设置:
具有JWT Bearer Auth的Web API
Asp.Net Core 2.0 MVC处理身份并提供视图
AngularJS-客户端
Angular正在请求JWT令牌,并将其传递给后续的HTTP请求。AJAX调用工作正常。问题是,如果我通过浏览器请求使用[Authorize]进行MVC操作,则该令牌显然未得到验证,因为没有cookie和auth标头。
我将如何对非ajax请求实施登录功能?
我假设我需要实现某种Cookie身份验证,但是我希望在转移到JWT后避免使用它。
我知道可以通过迁移到SPA来解决此问题,但是我想知道是否可以通过MVC服务视图来保留当今的解决方案-旧习惯:(
如果要进行服务器端JWT身份验证,则需要将JWT存储在cookie中,而不是本地存储中。Cookies是针对您的站点的域发布的,因此,当您请求您的MVC应用程序进行查看并假设您的API和MVC站点具有相同的来源(相同的架构+主机+端口)时,受保护的MVC控制器应该没有问题可以处理HTTP(S)请求中的传入cookie,并决定如何响应。WebAPI还应该能够处理具有JWT有效负载的cookie。我在这里找到了有关ASP.NET Core MVC身份验证的示例项目的不错的文章:https : //auth0.com/blog/asp-dot-net-core-authentication-tutorial/对于您的AngularJS SPA,将JWT设置为cookie而不是将其放入本地存储应该不是问题。实际上,这是存储JWT的更安全的方法,但是您需要确保您的JWT不会太长,因为cookie有效负载大小是有限的。有关更多信息,请访问:https : //stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句