angularjs – 客户端使用Cookie的REST API身份验证和授权工作流
我正在Symfony2中构建一个REST API应用程序,我正在尝试找到一种处理用户身份验证和授权的好方法.有很多解决方案,但到目前为止,它们都没有满足我的所有要求/关注.
该API主要由AngularJS SPA使用,用户使用用户名和密码组合登录.让GUI用户能够: >使用用户名和密码登录 在服务器端,我希望保持严格的RESTful.我提出了一个似乎是我需要的解决方案,但我想确定我没有遗漏任何东西. 从服务器的角度成功登录尝试的工作流程: >使用用户名和密码在/ login API端点上接收POST >每个令牌数据库条目必须具有预定义生存期(在配置中设置) >到期日期时间必须存储在db中 >令牌与用户多对一 – 用户可以在任何给定时间拥有多个活动令牌 从服务器的角度来看授权登录用户的工作流程: >从授权标头中提取令牌 >用户ID也可能包含在请求中,待决定 >哈希令牌并将其与数据库中每个用户的哈希值进行比较 从客户端(GUI)角度尝试成功登录的工作流程: >使用用户名和密码将POST请求发送到/ login API端点 从客户端(GUI)角度授权登录用户的工作流程: >从cookie中读取令牌并在请求中设置授权头,例如授权:基本QWxhZGRpbjpvcGVuIHNlc2FtZQ == >始终从cookie中读取令牌,因为用户可能希望将其删除以在浏览器中登出. 如果登录失败(cookie已删除或401响应)丢弃所有表单数据,请删除cookie并重定向到登录屏幕. 显然,存储在客户端的cookie将在每次请求时传递给服务器,因为这就是cookie所做的事情,但服务器会忽略它. cookie仅供客户使用.增加的带宽开销被认为可以忽略不计. 这个工作流程看起来好吗?我错过了什么吗? 解决方法
我做了一个名为
WebApiSecure的项目,它使用Json Web Tokens(JWT)进行授权 – Basic和Bearer.我相信它会执行您描述的大部分内容,例如允许令牌过期以及添加用户ID或角色.它可能会帮助您做您想做的事情.
它是使用Web Api 2构建的,前端可以是AngularJS或基于JQuery. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |