最近项目做一个统一portal,各个应用模块统一入口,人员账号统一。 单点登陆时序图
应用A
应用B
在日常调试过程中遇到的跨域问题: 1、项目中支持跨域请求
@CrossOrigin(origins = {"http://domain1.com", "http://domain2.com"})
当发生跨域请求时,浏览器会发起两次请求,第一次为预检请求,其请求方法为OPTIONS,第二次为真实请求。只有当第一次请求成功后才会发起第二次请求。这个时间间隔是上面例子中配置的maxAge(long)。
所以在拦截器或者过滤器对token进行验证的时候处理,OPTIONS的请求是不会带有认证信息,所以需要跳过OPTIONS请求。
String method = request.getMethod();
if(method.equals("OPTIONS")){
// 放行
} else {
// 验证token
}
2、请求之间Cookie传递
结合Nginx和本地hosts大多数单点登陆的场景都能覆盖测试