1.前后端跨域问题
1.1检查在UserController上添加如下注解:
//跨域请求中,不能做到session共享
@CrossOrigin(allowCredentials = "true",allowedHeaders = "*")
1.2检查在getotp.html和register.html中添加跨域请求,注:是两个页面都添加
//允许跨域请求
xhrFields:{withCredentials:true},
crossDomain: true,
2.谷歌浏览器禁用cookie问题
f12以后在谷歌浏览器报以下错误,报验证码不正确
解决:
方法一:换用火狐浏览器访问
方法二:在UserController页面添加下面代码
在上面注入
@Autowired
private HttpServletResponse httpServletResponse;
在getOtp方法中添加下面代码
//设置samesite=None, httponly,secure等属性
ResponseCookie cookie = ResponseCookie.from("JSESSIONID", httpServletRequest.getSession().getId() ) // key & value
.httpOnly(true) // 禁止js读取
.secure(true) // 在http下也传输
.domain("localhost")// 域名
.path("/") // path
.maxAge(3600) // 1个小时候过期
.sameSite("None") // 大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外
.build()
;
httpServletResponse.setHeader(HttpHeaders.SET_COOKIE, cookie.toString());
3.注册不成功的问题
1.检查UserServiceImpl的register方法有没有设置id
2.在UserMapper.xml中的insertSelective 方法上加下面配置
keyProperty="id" useGeneratedKeys="true
4.启动项目