我对 AOP 有点陌生,对我面临的问题感到困惑。我有@AuthorizeUser
在表示层上作用于方法的注释。我需要检查用户是否有权执行该方法。这是代码AuthorizeUserAspect
:
@Aspect
public class AuthorizeUserAspect {
@AuthoWired
private UserService service;
@Before(value = "@annotation(com.company.annotation.AuthorizeUser)")
public void isAuthorized(JoinPoint jp) {
// Check if the user has permission or not
// executing some Service Layer services and
// Persistence Layer, corresponding to that
service.checkUser();
// Is there a way I can make this method Conditional. something like:
if ( /* User has permission */ ) {
// do nothing, so the method will be executed after this
}
else {
// 1) Prevent the Method to be executed [and/or]
// 2) Pass some Parameters to the method for checking [and/or]
// 3) Execute another method on that class [e.g showAccessDenied()]
}
}
}
这有点类似于这个问题Spring MVC + Before Advice check security。但它建议返回一些字符串(即“不好”)。我的应用程序中有两种类型的 UI(Struts 和 Jersey),所以会有两种返回类型(String
和Response
分别)。所以我想这可能不是最好的方法。
如果你能告诉我一个解决方法,我会很高兴。
这甚至是一个好方法吗?