JAvaユーザーがjavaにログインして自動ログインを実現したかどうかを検証
6653 ワード
本文はjavaがユーザーがすでにログインして自動ログインを実現したかどうかを検証する詳細なコードを共有して、皆さんの参考にして、具体的な内容は以下の通りです.
1、ユーザーがログインしたことを確認する
Web.xmlに設定し、jsps/*を考慮します.
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:ログインページの開発
ステップ2:クッキーの保存に成功
ステップ3:このサイトの任意のページにアクセスするには、自動ログインを実行する必要があります.
すべてのurl=/*を考慮するオーバーライドを書きます.すべてのクッキーをdoFilterで読み込みます.AutoLoginという名前のクッキーがあるかどうか.
いつまでも放任する.
第四渉:web.xmlにすべてのurl=/*を構成する
ステップ5:開発終了
ステップ6:コードの最適化
ユーザーが手動でログインする場合、AutoFiilterのdoFilterメソッドにもアクセスし、すべてのCookieを1回読み取ります.今回の遍歴はユーザーにとって余計だ.
だからLoginServiceというurlはdoFilerの中では考えすぎないはずだ.
また、終了に対しても自動的にログインできません.
以上が本文のすべての内容で、みんなの学習に役立つことを望みます.
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}
ステップ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の中では考えすぎないはずだ.
また、終了に対しても自動的にログインできません.
以上が本文のすべての内容で、みんなの学習に役立つことを望みます.