浏览 3286 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-09-23
最后修改:2011-09-23
但Action却获取不到页面中的值了,报空指针异常。 <form-login login-page="/login.jsp" login-processing-url="/j_spring_security_check" default-target-url="/login!login.action" authentication-failure-url="/login.jsp?login_error=1" always-use-default-target="true" /> 请各位朋友指正。 附login!login.action实现类 public class LoginAction extends BaseAction implements UserDetailsService { private String j_username; //get set private String j_password; //get set private User tempUser; //get set @Autowired private UserInfoBiz userInfoBiz; public String login() { try { UserInfo user = null; //j_username为null String tempUsername = tempUser.getUsername(); //空指针异常,tempUser已在loadUserByUsername赋值 } catch(Exception e) { e.printStackTrace(); } return null; } public UserDetails loadUserByUsername(String arg0) throws UsernameNotFoundException, DataAccessException { org.springframework.security.userdetails.User userDetail; //成功赋值 tempUser = userDetail; return userDetail; } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-09-23
看看是不是spring的安全认证框架的拦截顺序,你的这个对象是在之前还是在之后赋值的
|
|
返回顶楼 | |
发表时间:2011-09-23
你这种做法是错误的~经国Spring security 验证后,它redirect到另一个页面的,所以不能传参的。当然也不可能接收到参数。正确的做法是
UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); userDetails.getUsername(); 里边有这些属性的。另外说下啊。。用户所有的信息都是存在Authentication里的。你可以看看 |
|
返回顶楼 | |
发表时间:2011-12-05
UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
userDetails.getUsername(); 我就是用楼上的方法,但是得不到,是空指针,我查看了一下,SecurityContextHolder.getContext()得到的对象中authentiaction是空,我需要在什么地方把用户信息放到SecurityContextHolder呢,而我在AccessDecisionManager接口实现类中SecurityContextHolder.getContext().setAuthentication(authentication);貌似没起效果 |
|
返回顶楼 | |