获取服务层中的当前用户

时间:2015-06-25 12:32:55

标签: java spring spring-mvc spring-security

我希望获得服务层中的当前用户

我尝试了以下代码但得到空指针异常

@Service
public class MyService{

@Autowired
TodoRepository todoRepository;

public void execute(){
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    Todo todo = new Todo();
    todo.setDomain(auth.getName());
    todoRepository.save(todo);  
} 

有谁能告诉我如何通过服务层中的spring security获取登录用户?

1 个答案:

答案 0 :(得分:0)

这将帮助您找到当前经过身份验证的用户:

 @Override
    public Person getCurrentlyAuthenticatedUser() {

        Authentication authentication = SecurityContextHolder.getContext()
                                            .getAuthentication();

        if (authentication == null) {
            return null;
        } else {
            // The line below calls the method from my Person database, 
            // where I search users by their Email(username)
            return personDAO.findPersonByUsername(authentication.getName());
        }
    }

希望这会有所帮助。如果没有,请让我知道,我会删除我的答案。