java之springmvc 验证包含 userobject 的 httpsession
我需要以更好的方式为我当前的项目验证 HttpSession(用于 Spring MVC 应用程序)。
这是场景:
1) 一旦用户验证成功,userObject
对象被添加到httpSession类
HttpSession session = req.getSession(true);
session.setAttribute(AppConstants.LOGGEDIN_PARAM, userDetail);
2) 然后对于每个请求,从 HttpSession 类中检索 userObject
以验证用户 Session
@RequestMapping(value = "/apply", method = RequestMethod.GET)
public String getTourApplyPage(HttpServletRequest req, ModelMap map) {
UserDetailTO userDetail = (UserDetailTO) req.getSession().getAttribute(AppConstants.LOGGEDIN_PARAM);
Long employeeId = userDetail.getUserType() == 1 ? userDetail.getEmployeeId():userDetail.getUserId();
if (employeeId == 0) {
req.setAttribute(AppConstants.MSG_PARAM, "Invalid employee Id.");
return userDetail.getUserType() == 1 ? AppConstants.PIS_MESSAGE : AppConstants.ADMIN_PIS_MESSAGE;
}
...
}
可以有更好的方法在 HttpSession
中设置 userDetail
对象,但我有一个限制,不能更改此实现(第 1 点)。
是否可以更改从 HttpSession
获取 userDetail
对象的更好实现(第 2 点)?
请您参考如下方法:
Is it possible to write a better implementation for getting a
userDetail
object fromhttpSession
?
在如此高的抽象级别上工作,就像 Controller 一样,您不一定需要注入(inject) HttpServletRequest
或 HttpSession
。
您可以使您的 Controller 具有 session 范围,并在那里注入(inject)一个具有 session 范围的 bean。该 bean 可以包含一个 userDetails
和一条验证失败的消息。
@RestController
@Scope("session")
public class Controller {
@Autowired
private SessionDetails details;
@PostMapping(path = "/validate")
public void validate() {
details.setUserDetails(...);
}
@GetMapping(path = "/apply")
public String apply() {
final UserDetailTO userDetails = details.getUserDetails();
...
}
}
@Component
@Scope("session")
class SessionDetails {
private String message;
private UserDetailTO userDetails;
// getters & setters
}
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。