【发布时间】:2011-07-21 04:51:20
【问题描述】:
我已经在我的 Spring MVC 控制器中定义了这个方法:
@RequestMapping(value = "{id}/content", method=RequestMethod.POST)
@PreAuthorize("principal.user.userAccount instanceof T(com.anonym.model.identity.PedagoAccount) AND principal.user.userAccount.userId == #object.pedago.userId AND #form.id == #object.id")
public String modifyContent(@PathVariable("id") Project object, @Valid @ModelAttribute("form") ProjectContentForm form) {
....
}
然后在我的 JUnit 测试中我想调用这个方法并确保 PreAuthorize 条件得到验证。但是,当我在我的 JUnit 测试中使用错误帐户设置用户主体时,没有错误并且该方法完成。看来注释被绕过了。
但是当我以正常方式(不是测试)调用这个方法时,PreAuthorize 被验证了。
如果可能的话,如何在junit测试中测试这个注解以及如果它抛出一个异常如何捕获?
谢谢,
尼古拉斯
【问题讨论】:
-
只是给在 PreAuthorize 中使用“principal”的其他人的注释,这将失败并返回 nullpointerexcpetion,并且不会触发重新授权,除非您在 PreAuthorize 注释中包含具有 isAuthenticated() 效果的内容或在security.xml中
标签: spring-mvc junit controller spring-security spring-el