如何通过基于Cookie的身份验证实现Web API访问授权?
因为你的MVC应用和Web API部署在同一Azure Web App下,属于完全同域的部署架构,浏览器发起API请求时会自动携带MVC下发的认证Cookie,不需要额外引入JWT、OAuth等复杂认证体系,直接复用现有逻辑即可,改造成本几乎为零。
具体操作步骤
- 保持Program.cs中现有的Cookie认证配置不变,不需要新增其他认证方案,ASP.NET Core的认证体系会对MVC控制器和API控制器统一生效;注意检查Cookie配置的
Path参数,确保API的路由路径包含在Cookie的生效路径范围内,没有特殊配置的话默认是根路径/,不需要修改 - 给需要保护的API控制器/接口添加
[Authorize]特性,和你之前给MVC控制器加的权限校验逻辑完全一致,框架会自动校验请求携带的Cookie有效性,自动读取DB中的用户信息完成身份核验 - 如有跨站请求伪造防护需求,给API接口添加
[ValidateAntiForgeryToken]特性,前端发起请求时携带MVC页面渲染时生成的防伪Token即可;前端发请求时配置credentials: 'include'确保Cookie正常携带 - 允许匿名访问的API接口单独添加
[AllowAnonymous]特性即可
适用边界说明
该方案仅适用于Web API仅面向同域MVC前端提供服务的场景,无需对外向第三方应用提供接口。如果后续需要对外开放API能力,再考虑叠加JWT等支持第三方调用的认证方案即可。
内容的提问来源于stack exchange,提问作者Chamodh
相关产品推荐
相关产品推荐

