【发布时间】:2013-09-23 14:30:24
【问题描述】:
对不起我的英语。 JSF 与 Spring Security 集成的问题。
我做了什么:
- 在实体
User实现接口UserDetails - 接口
UserDAO扩展接口UserDetailsService -
UserHibernateDAO实现接口UserDAO在 LoginMB 中如果要添加方法
login():public void login() { UserDetails user = getDao().loadUserByUsername("admin2@admin.ru"); password= user.getPassword(); }然后按预期显示密码,即步骤 1-3 正在工作。
-
在applicationContext-security.xml中我要添加:
<beans:bean id="UserDAO" class="com.otv.model.dao.hibernate.UserHibernateDAO" /> <authentication-manager alias="authenticationManager"> <authentication-provider user-service-ref="UserDAO" /> </authentication-manager> -
在登录MB中:
public class LoginMB implements Serializable { private static final long serialVersionUID = 1L; @Qualifier("authenticationManager") AuthenticationManager authenticationManager; private String userName; private String password; public String login() { UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("admin2@admin.ru", "2"); // next line is 54 Authentication authenticate = authenticationManager.authenticate(token); if (authenticate.isAuthenticated()) { SecurityContextHolder.getContext().setAuthentication(authenticate); } return "success"; } //get and set metods }
它打印错误:
javax.faces.FacesException: #{loginMB.login}: java.lang.NullPointerException
...
java.lang.NullPointerException
at com.otv.managed.bean.LoginMB.login(LoginMB.java:54)
我怎么想,在 LoginMB 中不起作用@Qualifier 注释:
@Qualifier("authenticationManager")
AuthenticationManager authenticationManager;
请告诉我如何在另一个链接 authenticationManager 上?
【问题讨论】:
-
请更新问题以仅显示问题。将 问题已解决 部分移到答案中,然后等待两天接受。
标签: hibernate jsf spring-security