上一次我们谈到了自定义安全表达式中一个较为简单的做法,就是通过自定义PermissionEvaluator的实现,为实现对于权限的动态判定的提供了相当方便的实现方式,使用了hasPermission安全表达式来加以改造。但是这只是自定义了安全处理逻辑,下面我们来探讨下如何完全地来自定义安全表达式。
下面我们将通过自定义一个安全表达式isMember()来检查用户访问凭证是否是组织成员。
可以看到,我们在这里定义了isMember方法来提供一个新的安全表达式。并且注意到该类通过继承MethodSecurityExpressionOperations 接口来提供对于内建安全表达式的支持。
现在再将CustomMethodSecurityExpressionHandler引入到方法安全配置中。
通过上述定义和配置,我们的自定义表达式已经生效。接下来就是在一个简单的事例中使用它。
上述就是一个完全自定义安全表达式的过程,通过该过程我们就可以实现完全自定义的复杂安全逻辑判断的处理过程。