Spring Security 3.1自定義登錄

         在上一章中寫了 Spring Security 3.1的配置與使用。但是研究過 Spring Security 的都知道, Spring Security的登錄認證是做得比較死的,我們在登錄頁面只能提交到j_spring_security_check進行登錄認證。接下來就是我們如何自定義登錄認證,輸入完用戶名、密碼、驗證碼等之後提交到我們自定義的地址進行驗證(如struts2的action)

只需在自定義的action中加入以下代碼即可。

          //spring security 將權限及用戶信息存入securityContext
					UserDetails userDetails = userDetailsService.loadUserByUsername(userName);
					Authentication authentication = new UsernamePasswordAuthenticationToken(  
							userDetails, userDetails.getPassword(), userDetails.getAuthorities());
					SecurityContext securityContext = SecurityContextHolder.getContext();
					securityContext.setAuthentication(authentication);
					HttpSession session = request.getSession(true);
				        session.setAttribute("SPRING_SECURITY_CONTEXT", securityContext);
				

在 Spring Security中,用戶登錄認證成功後,會將用戶的信息以及用戶擁有的權限存入SecurityContext中,需要的時候從中去取。我們自定義登錄時,只需在自定義的action中將這些信息取出來然後存入SecurityContext中即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章