欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 前端技术 > vue >内容正文

vue

spring boot shiro vue前后端分离时,获取不到session -凯发ag旗舰厅登录网址下载

发布时间:2024/10/5 vue 29 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 spring boot shiro vue前后端分离时,获取不到session 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

登录成功后,获取用户对应的菜单树,结果报错session失效。

controller:

@apioperation("用户登录") @apiimplicitparams({@apiimplicitparam(value = "用户名", name = "username",defaultvalue = "系统管理",datatype = "string",paramtype="query"),@apiimplicitparam(value = "密码", name = "password",defaultvalue = "c06f8860a055",datatype = "string",paramtype="query"),@apiimplicitparam(value = "验证码", name = "captcha",defaultvalue = "",datatype = "string",paramtype="query")}) @postmapping("/api/login") public result login(string username, string password,string captcha){map map = new hashmap<>();try {if(stringutils.isblank(username)||stringutils.isblank(password)||stringutils.isblank(captcha)){return result.fail(902,"username或password或captcha不能为空");}if(captcha.length()<120){return result.fail(903,"验证码不正确");}string tokenvalidate = rfgcglmapper.tokenvalidate(username, captcha);if(stringutils.isblank(tokenvalidate)){return result.fail(903,"验证码不正确");}usernamepasswordtoken usernamepasswordtoken = new usernamepasswordtoken(username, password);subject subject = securityutils.getsubject();//完成登录subject.login(usernamepasswordtoken);rfgcgl rfgcgl = rfgcglmapper.selectone(new querywrapper().eq("yhmc", username).eq("yhkl", password));map.put("user",rfgcgl);return result.ok(map);}catch (exception e) {string ex = e.getclass().getname();if (ex != null) {if (unknownaccountexception.class.getname().equals(ex)) {return result.fail(904,"用户名不存在");} else if (incorrectcredentialsexception.class.getname().equals(ex)) {return result.fail(905,"账户或密码错误");} else {return result.fail(906,"登录失败");}}return result.fail(901,"登录失败");} }

 

@apioperation("动态菜单") @postmapping("/menu/tree") public result menutree(){map map = new hashmap<>();try {string username = (string) securityutils.getsubject().getprincipal(); // 获取当前登录用户if(null==username){return result.fail(902,"登录已失效");}rfgcgl user = new rfgcgl().selectone(new querywrapper().eq("yhmc", username));if(null==user){return result.fail(903,"用户不存在");}list list = rolemenumapper.getmenubyrole(user.getroleid());list menus = menumapper.getmenusbyids(list);list rfmenus = menuutil.parsemenutree(menus);map.put("data",rfmenus);return result.ok(map);}catch (exception e){e.printstacktrace();return result.fail(901);} }

拦截器:

@suppresswarnings("unchecked") @bean public filterregistrationbean corsbean() {urlbasedcorsconfigurationsource source = new urlbasedcorsconfigurationsource();corsconfiguration config = new corsconfiguration();config.setallowcredentials(true);config.addallowedorigin("*");config.addallowedheader("*");config.addallowedmethod("*");source.registercorsconfiguration("/**", config);filterregistrationbean bean = new filterregistrationbean(new corsfilter(source));bean.setorder(0);bean.setenabled(enablecors);return bean; }

解决办法:后台代码没有问题,需要在前端代码每次发送请求时添加  axios.defaults.withcredentials = true 这段代码.

总结

以上是凯发ag旗舰厅登录网址下载为你收集整理的spring boot shiro vue前后端分离时,获取不到session的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图