日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > vue >内容正文

vue

spring boot+shiro+vue前后端分离时,获取不到session

發(fā)布時(shí)間:2024/10/5 vue 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring boot+shiro+vue前后端分离时,获取不到session 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

登錄成功后,獲取用戶對(duì)應(yīng)的菜單樹(shù),結(jié)果報(bào)錯(cuò)session失效。

controller:

@ApiOperation("用戶登錄") @ApiImplicitParams({@ApiImplicitParam(value = "用戶名", name = "username",defaultValue = "系統(tǒng)管理",dataType = "String",paramType="query"),@ApiImplicitParam(value = "密碼", name = "password",defaultValue = "C06F8860A055",dataType = "String",paramType="query"),@ApiImplicitParam(value = "驗(yàn)證碼", name = "captcha",defaultValue = "",dataType = "String",paramType="query")}) @PostMapping("/api/login") public Result login(String username, String password,String captcha){Map<String,Object> 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,"驗(yàn)證碼不正確");}String tokenValidate = rfgcglMapper.tokenValidate(username, captcha);if(StringUtils.isBlank(tokenValidate)){return Result.fail(903,"驗(yàn)證碼不正確");}UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(username, password);Subject subject = SecurityUtils.getSubject();//完成登錄subject.login(usernamePasswordToken);Rfgcgl rfgcgl = rfgcglMapper.selectOne(new QueryWrapper<Rfgcgl>().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,"賬戶或密碼錯(cuò)誤");} else {return Result.fail(906,"登錄失敗");}}return Result.fail(901,"登錄失敗");} }

?

@ApiOperation("動(dòng)態(tài)菜單") @PostMapping("/menu/tree") public Result menuTree(){Map<String,Object> map = new HashMap<>();try {String username = (String) SecurityUtils.getSubject().getPrincipal(); // 獲取當(dāng)前登錄用戶if(null==username){return Result.fail(902,"登錄已失效");}Rfgcgl user = new Rfgcgl().selectOne(new QueryWrapper<Rfgcgl>().eq("YHMC", username));if(null==user){return Result.fail(903,"用戶不存在");}List<Integer> list = roleMenuMapper.getMenuByRole(user.getRoleid());List<RFMenu> menus = menuMapper.getMenusByIds(list);List<RFMenu> 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; }

解決辦法:后臺(tái)代碼沒(méi)有問(wèn)題,需要在前端代碼每次發(fā)送請(qǐng)求時(shí)添加??axios.defaults.withCredentials = true 這段代碼.

總結(jié)

以上是生活随笔為你收集整理的spring boot+shiro+vue前后端分离时,获取不到session的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。