我有以下设置:
使用JWT Bearer Auth的Web API
Asp.Net Core 2.0 MVC处理身份并提供视图
AngularJS - 客户端
Angular正在请求JWT令牌并将其传递给后续的http请求 . AJAX调用工作正常 . 问题是如果我通过我的浏览器通过[授权]请求MVC操作,那么该令牌显然没有被验证,因为没有cookie和没有auth头 .
我将如何实现对非Ajax请求的登录功能?
我假设我需要实现某种Cookie身份验证,但我希望在转移到JWT后避免使用它 .
我知道这可能可以通过迁移到SPA来解决,但我想知道是否有办法保持今天的解决方案与MVC服务视图 - 旧习惯:(
1 回答
如果您需要服务器端JWT身份验证,则需要将JWT存储在cookie而不是本地存储中 . Cookie是针对您网站的域名发布的,因此当您向MVC应用程序请求视图并假设您的API和MVC站点具有相同的来源(相同的架构主机端口)时,受保护的MVC控制器应该没有问题来处理传入的cookie在HTTP(S)请求中并决定如何响应 . WebAPI还应该能够处理具有JWT有效负载的cookie . 我在这里找到了关于ASP.NET Core MVC身份验证的示例项目的好文章:https://auth0.com/blog/asp-dot-net-core-authentication-tutorial/对于你的AngularJS SPA,它不应该太长,因为cookie有效载荷大小有限 . 更多关于它:https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage