前端登陆,如何实现鉴权
token验证登陆
- 客户端使用用户名+密码请求登录
- 服务端收到请求,验证用户名和密码
- 验证成功后,服务端会签发一个token,再把这个token发送给客户端
- 客户端收到token,存储起来,放在cookie或者localstorage里
- 客户端每次向服务端请求资源时带着token
- 服务端收到请求,验证token是否成功
最常用的健全时JWT方案(JSON WEB TOKEN)
JWT对象通常由三部分构成
- Headers:包括类别(typ)、加密算法(alg)
- Claims:包括需要传递的用户信息
- Signature:根据alg算法与私有秘钥进行加密得到签名字串
前端设计
使用vuex保存全局状态,做数据持久化
单点登录
背景:一个大型系统里可能包含多个子系统,用户在操作不同系统时,需要多次登录,很麻烦。 前提:同域名下的SSO(主域名相同),例如:某网站域名为www.aaa.com, 还存在两个相同主域名下的子系统 www.bbb.aaa.com 和 www.ccc.aaa.com,就可以实现SSO
- 客户端:用户访问某个子系统时,如果没有登录,则跳转到SSO认证中心提供的登陆页进行登录
- 服务端:登录认证后,服务端把登录用户信息存在session中,并附加在响应头set-cookie字段中,设置cookie的Domain为 .aaa.com
- 客户端:再次发请求时,携带主域名Domain下的cookie发送给服务器,服务器通过cookie验证登录状态