最近开发smain遇到的问题,因为是前后端分离,而后端服务有多个(目前有control/oms/wms),所以不同的模块访问的
服务是不同的。虽然shiro和redis做了集成,session已经可以共享,但是不同的服务因为域名不同,导致访问不同的服务
是cookie不一样。其实可以使用cas单点登陆解决,不过暂时不想做集成,选择一个比较取巧的方式实现。
如下:不同的模块访问的后端的服务是独立部署的
登陆成功后将sessionId 和 服务列表返回到前端
subject.login(token);
Object cookie = SecurityUtils.getSubject().getSession().getId();
Map<String,Object> results = new HashMap<String,Object>();
results.put("cookie", cookie.toString());
List<Object[]> nodes = this.createQuery("SELECT node.code,node.host FROM ServiceNode node");
results.put("nodes", nodes);
前端接受到后,分别访问每个服务的 sso
@RequestMapping(value="/sso")
public ResponseResult login(String cookieValue, String path){
Cookie cookie = new Cookie("appKey",cookieValue