Spring Security @PreAuthorize 使用 SpEL 语言访问自动装配的 bean [重复]

Posted

技术标签:

【中文标题】Spring Security @PreAuthorize 使用 SpEL 语言访问自动装配的 bean [重复]【英文标题】:Spring Security @PreAuthorize access to autowired bean using SpEL language [duplicate] 【发布时间】:2019-04-02 09:49:50 【问题描述】:

我想使用 SpEL 语言在 Spring Security @PreAuthorize 下访问我的自动装配 bean。

@Component
@Transactional
public class TodoDao implements ITodoDao 

    @Autowired
    private SessionFactory sessionFactory;

    @Autowired
    private AuthenticationFacade authenticationFacade;

    @Override
    @PreAuthorize("...") // I want to access to one of my autowired bean here
    public void changeTodoStatus(Todo todo) 
        Object user = authenticationFacade.getAuthentication().getPrincipal();
        todo.setDone(!todo.isDone());
        sessionFactory.getCurrentSession().update(todo);
    

【问题讨论】:

【参考方案1】:

在您的 bean 名称前使用“@”:

@Component
@Transactional
public class TodoDao implements ITodoDao 

    @Autowired
    private SessionFactory sessionFactory;

    @Autowired
    private AuthenticationFacade authenticationFacade;

    @Override
    @PreAuthorize("@authenticationFacade.(#toDo)") // I want to access to one of my autowired bean here
    public void changeTodoStatus(Todo todo) 
        Object user = authenticationFacade.getAuthentication().getPrincipal();
        todo.setDone(!todo.isDone());
        sessionFactory.getCurrentSession().update(todo);
    

【讨论】:

以上是关于Spring Security @PreAuthorize 使用 SpEL 语言访问自动装配的 bean [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Spring mvc / security:从spring security中排除登录页面

Spring Security:2.4 Getting Spring Security

没有 JSP 的 Spring Security /j_spring_security_check

Spring-Security

Spring Security 登录错误:HTTP 状态 404 - /j_spring_security_check

未调用 Spring Security j_spring_security_check