为了账号安全,请及时绑定邮箱和手机立即绑定

如何创建用于spring安全表达式语言注释的自定义方法

如何创建用于spring安全表达式语言注释的自定义方法

尚方宝剑之说 2019-09-19 14:30:16
我想创建一个类,通过注释添加自定义方法以用于spring安全表达式语言,以进行基于方法的授权。例如,我想创建一个像'customMethodReturningBoolean'这样的自定义方法,以某种方式使用:  @PreAuthorize("customMethodReturningBoolean()")  public void myMethodToSecure() {     // whatever  }我的问题是这个。如果有可能,我应该创建自定义方法的子类,我将如何在spring xml配置文件中配置它,有人给我一个这样使用的自定义方法的示例?
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您需要子类化两个类。


首先,设置一个新方法表达式处理程序


<global-method-security>

  <expression-handler ref="myMethodSecurityExpressionHandler"/>

</global-method-security>

myMethodSecurityExpressionHandler将是的一个子类DefaultMethodSecurityExpressionHandler,其覆盖createEvaluationContext(),设置的一个子类MethodSecurityExpressionRoot的MethodSecurityEvaluationContext。


例如:


@Override

public EvaluationContext createEvaluationContext(Authentication auth, MethodInvocation mi) {

    MethodSecurityEvaluationContext ctx = new MethodSecurityEvaluationContext(auth, mi, parameterNameDiscoverer);

    MethodSecurityExpressionRoot root = new MyMethodSecurityExpressionRoot(auth);

    root.setTrustResolver(trustResolver);

    root.setPermissionEvaluator(permissionEvaluator);

    root.setRoleHierarchy(roleHierarchy);

    ctx.setRootObject(root);


    return ctx;

}


查看完整回答
反对 回复 2019-09-19
  • 3 回答
  • 0 关注
  • 898 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信