[英]Autowired annotation returns null in AuthenticationSuccessHandler
在我的Spring Security應用程序中,我嘗試成功登錄后返回cookie'remember_token'。 我的AuthenticanSuccessHandler類自動連接RememberMeService類,以從數據庫獲取“令牌”值。 但是自動裝配的引用RememberMeService返回null。 我確實為該類提到了@Component批注,但是它沒有改變結果。 鏈接到完整的源代碼
FormAuthenticationSuccessHandler :
package com.fastcheck.timesheet.common.security;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.stereotype.Component;
import com.fastcheck.timesheet.common.services.RememberMeService;
@Component
public class FormAuthenticationSuccessHandler implements AuthenticationSuccessHandler
{
@Autowired
public RememberMeService rememberMeService;
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException, ServletException
{
String username;
Object principal = authentication.getPrincipal();
if (principal instanceof UserDetails)
{
username = ((UserDetails)principal).getUsername();
}
else
{
username = principal.toString();
}
System.out.println("rememberMeService :"+rememberMeService);
if(rememberMeService != null)
{
Cookie cookie=new Cookie("remember_token",rememberMeService.getRememberMeToken(username));
cookie.setMaxAge(200);
response.addCookie(cookie);
}
response.setStatus(200);
response.sendRedirect("home");
}
}
從您的代碼中我了解到的是,您正在嘗試實現創建彈簧安全性以為您開箱即用的功能。
如果您正確地實現了Spring Security,我不明白為什么在您嘗試進行成功身份驗證后,“記住我”令牌不會自動存儲在用戶的瀏覽器中。
記住令牌自動發送到瀏覽器。 您無需單獨發送。 是否可以提供瀏覽器返回的cookie值? 否則,請使用以下腳本對其進行解碼。
String cookieAsPlainText = new String(Base64.decode(cookies[i].getValue());
cookieAsPlainText作為純值應為series:令牌格式。 請讓我知道這可不可以幫你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.