注意:在跨域请求中,即时目标地址有 cookie 且发起请求的页面也能读取到该 cookie,浏览器也不会将 cookie 自动设置到该跨域请求中。比如在http://localhost:8082/a页面中请求http://localhost:8081/abc,这两个地址下拥有共享cookie,http请求也不会携带cookie。
ssc表
这里只要新建三张表即可,user表、role表、user_role表。其中user用户表,role角色表为保存用户权限数据的主表,user_role为关联表。user用户表,role角色表之间为多对多关系,就是说一个用户可以有多个角色
cookies和session认证方式已经过时了,1,解决不了集群session共享问题 2.cookis在跨域中不会被携带,sessionid就无法找到
所以使用springsecurity来通过token的形式来做登录认证
springsecurity认证原理?
未登录跳转登录页面,登录成功给客户端返回token(字符串),并将token存到ssc的context中,客户端再次携带token请求时ssc通过token中的usename从context中获取信息,比对密码,是否过期state等信息,都通过放行
为什么要整合jwt?
jwt:
JSON Web Token(json形式的token)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息
前后端分析ajax发送的是json,所以ssc需要实现jwt的规范标准,如果是单机应用,可以不用jwt
JWT的工作流程
下面是一个JWT的工作流程图。模拟一下实际的流程是这样的(假设受保护的API在/protected中)
1.用户导航到登录页,输入用户名、密码,进行登录
2.服务器验证登录鉴权,如果用户合法,根据用户的信息和服务器的规则生成JWT Token
3.服务器将该token以json形式返回(不一定要json形式,这里说的是一种常见的做法)
4.用户得到token,存在localStorage、cookie或其它数据存储形式中。
5.以后用户请求/protected中的API时,在请求的header中加入 Authorization: Bearer xxxx(token)。此处注意token之前有一个7字符长度的 Bearer
6.服务器端对此token进行检验,如果合法就解析其中内容,根据其拥有的权限和自己的业务逻辑给出对应的响应结果。
7.用户取得结果
Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)
认证:是否可以入后台服务系统
授权:进来后有哪些操作权限