处理Spring安全性中的复杂授权

时间:2013-05-25 01:14:02

标签: java spring-security

我有一个使用授权前和授权后方法注释的spring MVC web应用程序。

我的一个服务中有一个特殊的方法需要应用更复杂的授权逻辑。

我注意到有一个PermissionsEvaluator接口,但这似乎是为了更全局的权限方法,而不是每个模块。我想有人可以编写一个委托给特定于模块的PermissionsEvaluators的实现,但这似乎很多工作。

另外,我要付出很多努力。授权决策基于实际处理期间的中间状态。如果我使用PreAuthorize机制,我将为授权生成该状态一次,然后再次“为realsies”。

我可以直接从服务层抛出标准弹簧异常吗?我还应该考虑其他方法吗?

1 个答案:

答案 0 :(得分:4)

考虑使用AccessDeniedException。当预处理或后置条件评估为false时,Spring Security会在内部抛出它。默认情况下,它会生成403 Forbidden页面。