2012-05-26 29 views
2

我已成功使用spring安全登錄用戶。但問題是,現在在我的網頁上,當創建一個新用戶時,他/她必須再次返回登錄頁面登錄,這當然會使用彈簧安全性。一旦創建新用戶,是否有辦法使用Spring Security自動登錄用戶?用戶創建後自動彈出安全登錄

+0

的[編程在用戶使用彈簧安全登錄]可能重複(http://stackoverflow.com/questions/7900994/programmatically-login-in-a-user-使用彈簧安全) –

回答

2

我從來沒有做過,但我認爲你應該做它在doc中描述的。

一旦請求被認證,驗證將 通常被存儲在由 SecurityContextHolder中由正在使用 認證機制管理的線程局部SecurityContext的。 一個明確的身份驗證就可以實現,而無需使用的 Spring Security的認證機制之一,通過創建一個 認證實例,並使用代碼

SecurityContextHolder.getContext()setAuthentication(anAuthentication);

請注意,除非身份驗證的身份驗證屬性設置爲true,否則它仍將通過任何遇到它的安全攔截器(用於方法或網絡調用)進行身份驗證。

+0

好像前途的解決方案,讓我試試,現在 – user1241438

+1

用下面的代碼 MyUserDetails爲userDetails = myUserDetailsS​​ervice \t .loadUserByUsername(newUserDomain.getEmailId()); 身份驗證auth = new UsernamePasswordAuthenticationToken(userDetails, \t \t \t \t newUserDomain.getPassword()); SecurityContextHolder.getContext()。setAuthentication(auth); – user1241438

5

爲此

UserDetails userDetails = userDetailsService.loadUserByUsername(username); 
UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken (userDetails, password2, userDetails.getAuthorities()); 
authenticationManager.authenticate(auth); 
if(auth.isAuthenticated()) { 
    SecurityContextHolder.getContext().setAuthentication(auth); 
}