2016-04-27 42 views
-1

首先設置後重定向頁面,我loginInterceptor看起來是這樣的:如何成功登錄(不帶彈簧安全)

public class LoginInterceptor extends HandlerInterceptorAdapter{ 
private static final Logger logger = LoggerFactory.getLogger(LoginInterceptor.class); 

@Override 
public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object handler) throws Exception{ 
     if (req.getSession().getAttribute("loginId") == null) { 
      res.sendRedirect("signin"); 
      return false; 
     } 
    return true; 
    } 
} 

這隻重定向頁面登錄,如果用戶沒有登錄現在我想如果有人成功登錄,則不使用Spring Security將重定向到其他頁面。我第一次使用Google,它只向我展示了Spring Security,但我不需要使用Spring Security就可以做到這一點。我試過其他語句,但沒有發生新的事情。有什麼我可以做的,以實現我想要的?提前致謝。

我正在使用Spring MVC + Java。

+0

向我們展示您的「其他」代碼。 –

+0

在else語句中,我只是添加了res.sendRedirect(「otherpage」);返回true。所以我不覺得有必要補充一點。 – SunSun

+0

*如果用戶未登錄,則僅重定向到登錄頁面。*否則會發生什麼情況?上面的代碼對我來說看起來很好。 – sura2k

回答

1

按的javadoc

返回:如果執行鏈應與下一 攔截器或處理程序本身進行。否則,DispatcherServlet假定此攔截器已經處理了響應本身,並且此處爲 。

所以在你其他的代碼,它應該返回false

+0

我加了res.sendRedirect(「otherpage」);返回false並且不起作用... – SunSun

+0

tomcat/apache日誌中的任何信息? –

+0

你的意思是在春季的控制檯?沒有錯誤。 – SunSun

0

迴歸真實 - 「OK繼續」

返回False - 「停止訴訟」(那你必須有一個重定向,否則只會停止我認爲)

如果您需要從LoginInterceptor:preHandle總是重定向你可以試試下面

public boolean preHandle(...){ 
     if (req.getSession().getAttribute("loginId") == null) { 
      res.sendRedirect("signin"); 
     }else{ 
      res.sendRedirect("home");//You have already logged in 
     } 

    return false; //Spring stops interceptor channing 
    } 

上述代碼存在問題,即使對於截取LoginInterceptor URL模式的其他URL模式,它也會始終重定向到登錄用戶的「主頁」。

我認爲你的發佈代碼是好的,並且在其他地方有什麼問題。