【发布时间】:2017-06-08 12:32:46
【问题描述】:
目前我正在以通常的方式吸引用户
SecurityContextHolder.getContext().getAuthentication().getPrincipal
不知道能不能通过bean factory得到,像这样
@Service
class UserProvider implements BeanFactoryAware {
BeanFactory beanFactory;
public Principal get(){
return (Principal) beanFactory.getBean("Principal");
}
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}
}
Spring 是否存储包含当前已验证用户的会话范围 bean?
【问题讨论】:
-
如果你告诉它存储它就可以了。或者如果其他一些 bean 依赖它,我猜。
-
这是不可能的。您可以在 Spring MVC 控制器中使用
Principal作为方法参数,但不能使用@Autowire它。 (这也是一个坏主意恕我直言)。您可以创建一个简单的帮助类来进行查找并从您需要用户的任何地方(在 MVC 部分之外)调用它。 -
你为什么需要这个?