关于Session中管理员登录无效的问题
老师好,我redis开了,也配置了服务。
不是管理员登录后,能够正常操作。是管理员登录后,就不能更改个性签名,提示需要登录。
然后是管理员,就currentUser获得的session为空。
UserController
/**
* 管理员登录接口
*/
@PostMapping("/adminLogin")
@ResponseBody
public ApiRestResponse adminLogin(@RequestParam("userName") String userName,
@RequestParam("password") String password, HttpSession session)
throws ImoocMallException {
if (StringUtils.isEmpty(userName)) {
return ApiRestResponse.error(ImoocExceptionEnum.NEED_USER_NAME);
}
if (StringUtils.isEmpty(password)) {
return ApiRestResponse.error(ImoocExceptionEnum.NEED_PASSWORD);
}
User user = userService.login(userName, password);
//校验是否是管理员
if (userService.checkAdminRole(user)) {
//是管理员,执行操作
//保存用户信息时,不保存密码
user.setPassword(null);
session.setAttribute(Constant.IMOOC_MALL_USER, user);
return ApiRestResponse.success(user);
} else {
return ApiRestResponse.error(ImoocExceptionEnum.NEED_ADMIN);
}
}redis配置
spring.session.store-type=redis spring.redis.host=localhost spring.redis.port=6379 spring.redis.password=
12
收起
正在回答
2回答
同学你好,根据同源策略,127.0.0.1与localhost是不同源的,所以登录时保存的信息的session的sessionId与后一个请求的sessionId不一致,导致无法获取之前保存的信息。
祝学习愉快!
2023版Java工程师
- 参与学习 人
- 提交作业 8790 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星