JAvaユーザーがjavaにログインして自動ログインを実現したかどうかを検証

6653 ワード

本文はjavaがユーザーがすでにログインして自動ログインを実現したかどうかを検証する詳細なコードを共有して、皆さんの参考にして、具体的な内容は以下の通りです.
1、ユーザーがログインしたことを確認する

package cn.hongxin.filter;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

 

public class LoginFilter implements Filter{

  public void init(FilterConfig filterConfig) throws ServletException {

  }

  public void doFilter(ServletRequest request, ServletResponse response,

      FilterChain chain) throws IOException, ServletException {

    // request   htt...

    HttpServletRequest req = (HttpServletRequest) request;

    //  session

    HttpSession ss = req.getSession();

    // session   user

    if(ss.getAttribute("user")==null){

      System.err.println("      ");

      req.getSession().setAttribute("msg", "     ");

      //      

      HttpServletResponse resp = (HttpServletResponse) response;

      resp.sendRedirect(req.getContextPath()+"/index.jsp");[W2] 

    }else{

      //  

      chain.doFilter(request, response);

    }

  }

  public void destroy() {

  }

}


Web.xmlに設定し、jsps/*を考慮します.



  login

  cn.itcast.filter.LoginFilter

 

 

  login

  /jsps/*

  /views/*

 

2、自動登録を実現する 
自動ログインは、ユーザーがこのページを複数回使用できるようにするため、ユーザー名とパスワードを再入力せずにログインできます.
ユーザーがユーザーのログイン情報、人、ローカルのファイルにクッキーを保存することを指します.
 Name,value,C宣言時new Cookie(key,value);
 Path        - デフォルト値は、現在クッキーを保存しているこのserlvetが存在するパスです.
クッキーがこのような経路にある場合:http://loclhost:8080/project/abc/AServlet、Cookieのパスは次のとおりです.http://loclhost/project/abc
 説明:
にあるhttp://loclhost/project/abcこのクッキーの値を読み込むには、ディレクトリの下のservletを使用します.
次の場合:
Cookieクラスの保存:http://loclhost:8080/project/a/b/AServletCookieのデフォルトpathは;http://loclhost/project/a/b
ステップ1:ログインページの開発



  

    
Name:
auto:
1
1
:${name}

ステップ2:クッキーの保存に成功

  public void doPost(HttpServletRequest request, HttpServletResponse response)

      throws ServletException, IOException {

    //      

    String name = request.getParameter("name");

    String auto = request.getParameter("auto");

    //       session

    request.getSession().setAttribute("name",name);

    //  auto   -1

    if(!auto.equals("-1")){

      int day = Integer.parseInt(auto);//1|7

      int seconds = 60*60*24*day;

      //  cookie

      Cookie c = new Cookie("autoLogin",name);

      c.setMaxAge(seconds);

      c.setPath(request.getContextPath());

      //  cookie

      response.addCookie(c);

     

    }

  }

 


ステップ3:このサイトの任意のページにアクセスするには、自動ログインを実行する必要があります.
すべてのurl=/*を考慮するオーバーライドを書きます.すべてのクッキーをdoFilterで読み込みます.AutoLoginという名前のクッキーがあるかどうか.
いつまでも放任する.
 

public void doFilter(ServletRequest request, ServletResponse response,

      FilterChain chain) throws IOException, ServletException {

    //     cookie

    HttpServletRequest req = (HttpServletRequest) request;

    //     cookie

    Cookie[] cs = req.getCookies();

    if(cs!=null){

      for(Cookie c:cs){

       if(c.getName().equals("autoLogin")){//         cookie

         String value = c.getValue();//    

         //      

         req.getSession().setAttribute("name", value);

         break;

       }

      }

    }

    //         

    chain.doFilter(request, response);

  }


第四渉:web.xmlにすべてのurl=/*を構成する



  auto

  cn.itcast.filter.AutoFilter

 

 

  auto

  /*

 


 ステップ5:開発終了

System.err.println("    ");

    //    session

    request.getSession().invalidate();

    Cookie c = new Cookie("autoLogin", "ddd");

    c.setMaxAge(0);

    c.setPath(request.getContextPath());

    response.addCookie(c);

//   request.getSession().removeAttribute("name");

    response.sendRedirect(request.getContextPath()+"/index.jsp");


ステップ6:コードの最適化
    ユーザーが手動でログインする場合、AutoFiilterのdoFilterメソッドにもアクセスし、すべてのCookieを1回読み取ります.今回の遍歴はユーザーにとって余計だ.
    だからLoginServiceというurlはdoFilerの中では考えすぎないはずだ.
    また、終了に対しても自動的にログインできません.
以上が本文のすべての内容で、みんなの学習に役立つことを望みます.