先看页面,点击验证码图片可以进行切换验证码
验证码利用的HuTool工具
先在中添加HuTool依赖
-
<dependency>
-
<groupId></groupId>
-
<artifactId>hutool-all</artifactId>
-
<version>5.5.1</version>
-
</dependency>
生成随机验证码,这里我写了封装类所以返回的Result
-
@Override
-
public Result imgCode(){
-
// 利用 hutool 工具,生成验片资源
-
CircleCaptcha captcha = (200, 100, 4, 7);
-
// 获得生成的验证码字符
-
String code = ();
-
("真实的验证码是:"+code);
-
-
().setAttribute("code",code);
-
// 将验证码图片的二进制数据写入【响应体 response 】
-
try {
-
(());
-
} catch (IOException e) {
-
throw new RuntimeException(e);
-
}
-
return (code);
-
}
前端部分代码
-
<el-form-item label="验证码" prop="code">
-
<el-input v-model="" class="form_input" placeholder="请输入验证码" maxlength="4"></el-input>
-
</el-form-item>
-
<img :src="baseUrl+'/user/imgCode'" style="width:100px;height:40px" id="code" @click="refresh()">
刷新验证码方法
-
refresh(){
-
document.getElementById("code").src =this.baseUrl+'/user/imgCode?time'+ new Date().getTime();
-
console.log(document.getElementById("code"))
-
},
登录部分代码,Login账号密码验证
-
@PostMapping("/login")
-
public Result login(@RequestBody Login login, HttpServletRequest request) {
-
String code = ().getAttribute("code")+"";
-
if ((())){
-
User user = (login, );
-
return (user);
-
}else {
-
return ("验证码错误");
-
}
-
-
}
至此一切正常,但是code死活都拿不到
翻阅很多资料,具体可以看这个,设置过跨域的可以不用再设置一遍
springboot获取session - 百度文库 ()
在全局配置中加入
axios.defaults.withCredentials = true
请求中加入
xhrFields: { withCredentials: true},
这样就能获取到code进行验证了