2012-03-20 158 views
2

我有一個login screen,我通過檢查數據庫的憑據來驗證用戶。但是我怎麼能實現Remember me check box?像gmail remember me(stay signed in)一樣存在。我正在使用sign.jspAuth servlet (doPost)oracle 10g ee進行身份驗證。記住我在jsp登錄頁面

回答

5

您可以使用cookies來實現此目的。

在你的servlet響應處理器(doPost方法,的doGet等),創建以下列方式餅乾 -

if(remember_me_is_checked) 
{ 
    Cookie c = new Cookie("userid", userId.toString()); 
    c.setMaxAge(24*60*60); 
    response.addCookie(c); // response is an instance of type HttpServletReponse 
} 

讀他們,你可以使用這樣的事情 -

Cookie[] cookies = request.getCookies();  // request is an instance of type 
              //HttpServletRequest 
boolean foundCookie = false; 

for(int i = 0; i < cookies.length; i++) 
{ 
    Cookie c = cookies[i]; 
    if (c.getName().equals("userid")) 
    { 
     string userId= c.getValue(); 
     foundCookie = true; 
    } 
} 

HereCookie類的官方文檔。

+0

謝謝Sayem您的迴應,但請你稍微詳細說明我該如何實現這個'cookie'來保持登錄狀態? – Tom 2012-03-20 10:49:20

+0

引用此鏈接,這在JS中,但看到背後的邏輯http://www.roseindia.net/jsf/RememberMeLogin.shtml – 2012-03-20 10:52:50

+0

@RakeshPatel是一個有用的,但如果我將從瀏覽器中刪除cookie,那麼也許我必須再次選中該複選框以實現'保持登錄狀態' – Tom 2012-03-20 10:56:19

0

您可以使用cookie來幫助您實施。像這樣的東西。

String userIdendificationKey="UserName"; 

Cookie cookie = new Cookie ("userIdendificationKey",userIdendificationKey); 
// Set the age of the cokkie 
cookie.setMaxAge(365 * 24 * 60 * 60); 
//Then add the cookies to the response 
    response.addCookie(cookie); 

,然後檢查針對特定值更高版本。

-2

看看Spring SecurityIt

它是一個強大和高度可定製的身份驗證和訪問控制框架。

您還可以檢查Rose India的代碼,這對您會更有幫助。

0

我不知道它是否安全,但這是我做的。

在login.jsp的頭標記

<script type="text/javascript"> 
var isLoggedIn = "${isLoggedIn}"; 
if(isLoggedIn === true) 
window.location.href="Home.jsp"; 
</script> 
在身體標記

我增加一個複選框記住如下

<input type="checkbox" id="RememberMe" name="rememberMe"> 
<label for="RememberMe">Remember Me</label> 

在servlet的doPost方法我加入下面

if(userdetails are verified) 
      {   
       if(request.getParameter("rememberMe")!=null){ 
        request.getSession().setAttribute("isLoggedIn", true); 
       } 
       RequestDispatcher rs = request.getRequestDispatcher("Home.jsp"); 
       rs.forward(request, response);     
      } 
      else 
      { 
       RequestDispatcher rs = request.getRequestDispatcher("fail.jsp"); 
       rs.include(request, response); 
      } 
代碼

使用它它會在第一次登錄時要求提供憑據,並且它會將登錄信息存儲在sessi中在參數上,如果您嘗試第二次訪問該站點,它將自動轉到「Home.jsp」而不是「login.jsp」

請評論此方法是否良好,可以進行其他任何修改。 歡迎提出建議。