SpringBoot使用HuTool工具进行验证码过程及session获取不到的问题

时间:2024-10-04 18:20:18

先看页面,点击验证码图片可以进行切换验证码

 验证码利用的HuTool工具

先在中添加HuTool依赖

  1. <dependency>
  2. <groupId></groupId>
  3. <artifactId>hutool-all</artifactId>
  4. <version>5.5.1</version>
  5. </dependency>

生成随机验证码,这里我写了封装类所以返回的Result

  1. @Override
  2. public Result imgCode(){
  3. // 利用 hutool 工具,生成验片资源
  4. CircleCaptcha captcha = (200, 100, 4, 7);
  5. // 获得生成的验证码字符
  6. String code = ();
  7. ("真实的验证码是:"+code);
  8. ().setAttribute("code",code);
  9. // 将验证码图片的二进制数据写入【响应体 response 】
  10. try {
  11. (());
  12. } catch (IOException e) {
  13. throw new RuntimeException(e);
  14. }
  15. return (code);
  16. }

前端部分代码

  1. <el-form-item label="验证码" prop="code">
  2. <el-input v-model="" class="form_input" placeholder="请输入验证码" maxlength="4"></el-input>
  3. </el-form-item>
  4. <img :src="baseUrl+'/user/imgCode'" style="width:100px;height:40px" id="code" @click="refresh()">

刷新验证码方法

  1. refresh(){
  2. document.getElementById("code").src =this.baseUrl+'/user/imgCode?time'+ new Date().getTime();
  3. console.log(document.getElementById("code"))
  4. },

登录部分代码,Login账号密码验证

  1. @PostMapping("/login")
  2. public Result login(@RequestBody Login login, HttpServletRequest request) {
  3. String code = ().getAttribute("code")+"";
  4. if ((())){
  5. User user = (login, );
  6. return (user);
  7. }else {
  8. return ("验证码错误");
  9. }
  10. }

至此一切正常,但是code死活都拿不到

翻阅很多资料,具体可以看这个,设置过跨域的可以不用再设置一遍

springboot获取session - 百度文库 ()

在全局配置中加入

axios.defaults.withCredentials = true

请求中加入

xhrFields: { withCredentials: true},

 

这样就能获取到code进行验证了