我创建这个方法只是为了解释这个场景。我想评估模型对象内的用户域对象。
我知道我可以评估返回对象和方法参数。但是当我尝试使用模型对象时出现以下错误,**不能在 PostAuthorize / PreAuthorize 中使用模型对象吗?**
错误
[请求处理失败;嵌套异常是 java.lang.IllegalArgumentException: 无法评估表达式 '#model.user.userName != 'ramesh''] 根本原因 org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 7): Field or property在“org.springframework.validation.support.BindingAwareModelMap”类型的对象上找不到“用户”
代码
@PostAuthorize("#model.user.userName != 'ramesh'")
@RequestMapping(value="/createusername", method = RequestMethod.GET)
public String getCreateUserNamePage(ModelMap model) {
User user = new User();
String username = SecurityContextHolder.getContext().getAuthentication().getName();
if(username!=null)
user = customUserDetailsService.getUserByUsername(username);
else
user.setUserName(username);
model.put("user", user);
return "createusername";
}