后端springboot集成shiro之后,shiro框架会在浏览器端存一个 JSESSIONID ,
之前传统项目中页面每次请求都会带上JSESSIONID 到后台在进行权限验证操作等等,
可是现在是前后端分离,用户是访问前端项目,前端再访问服务端,那么这个JSESSIONID 就存不到用户浏览器中,
还会出现跨域问题,不知各位大佬都是如何解决的。
之前传统项目中页面每次请求都会带上JSESSIONID 到后台在进行权限验证操作等等,
可是现在是前后端分离,用户是访问前端项目,前端再访问服务端,那么这个JSESSIONID 就存不到用户浏览器中,
还会出现跨域问题,不知各位大佬都是如何解决的。
解决方案 »
- 正则表达式
- javax.servlet.ServletException: javax/el/ValueExpression的问题
- 请问如何用正则匹配字符
- MyEclipse出现启动错误
- java-session问题:同一个回话进入,能否清楚原来的session的值
- 新手如何学习Spring(顺便散分)!
- 为什么过滤器无效,在struts中?
- 请问有关struts的简单问题
- ssh Could not find action or result:
- 有人用Groovy,Scala和Clojure这三种语言吗?他们的前景怎么样?
- 项目中哪里用到IOC AOP
- Shiro 能否 在用户拥有 多角色情况下,指定某一个角色登录
axios.defaults.withCredentials=true;
拦截器
response.setHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
response.setHeader("Access-Control-Allow-Headers", "Authorization, Accept, Origin, X-Requested-With, Content-Type, Last-Modified");
response.setHeader("Access-Control-Allow-Credentials", "true");
2. 部署如果无法使用同一域名, 那么跨域问题就难免了, 需要跟前端共同研究下如何有效解决跨域问题, 后端其实加一些spring注解即可, 查下spring跨域即可
3. 其实说到底, shiro只不过是要取当前登录信息, 你可以不用 SESSION 实现登录, 可以用token, 这样相当于账号系统独立出来了, 跟域就没什么关系了
sessionid问题,最终个人解决方案是,用户登陆成功后,接口就返回给他sessionid,然后前端进行保存,后面每次请求都要在请求头上加上该值, AUTHORIZATION:0c82beaf-d2fa-424c-b6bb-5d6eff21a236,后端需要修改一下shiro获取sessionid方式,具体如下:
1.首先自定义sessionManager会话管理bean;
2.修改获取sessionid方法;如有异议欢迎下面坐,谢谢各位见解!