gpt4 book ai didi

Spring Security 自定义 PermissionEvaluator 配置无法正常工作

转载 作者:行者123 更新时间:2023-12-02 08:43:14 27 4
gpt4 key购买 nike

我的自定义 Spring Security PermissionEvaluator 有问题。所以,CustomPermissionEvaluator 需要该服务来完成其工作。

@Service
public class MyService {
// methods....
}

这是评估器本身。

public class CustomPermissionEvaluator implements PermissionEvaluator {

private MyService service;

public CustromPermissionEvaluator( MyService service ) {
this.service = service;
}

// hasPermission methods...


}

这是配置

@Configuration
@EnableGlobalMethodSecurity( prePostEnabled = true )
public class MethodSecurityConfiguration extends GlobalMethodSecurityConfiguration {

@Autowired
private MyService service;

@Override
protected MethodSecurityExpressionHandler createExpressionHandler() {

CustomPermissionEvaluator permissionEvaluator = new CustomPermissionEvaluator( service );

DefaultMethodSecurityExpressionHandler expressionHandler = new DefaultMethodSecurityExpressionHandler();
expressionHandler.setPermissionEvaluator( permissionEvaluator );

return expressionHandler;

}

}

因此,当调用 @PreAuthorize( "hasPermission( ... )") 时,不会发生任何事情。但是,当我将该依赖项直接放入 CustomPermissionEvaluator 的构造函数(无需 ApplicationContext 和 Autowiring )时,一切都会完美运行。我已将服务对象打印到日志文件中,并且它不为空。那么,到底出了什么问题呢?

最佳答案

我遇到了同样的问题,不得不使用 @Lazy 注释:

@Lazy @Autowired
private MyService service;

看来安全性内容是在 Spring 配置的其余部分之前引导的。我猜 @Lazy 允许注入(inject)引用,但在使用之前不会真正解析。

关于Spring Security 自定义 PermissionEvaluator 配置无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28139319/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com