JavaWeb 過濾器實現30天內自動登入
1、在 index.jsp 中
2、在 login.jsp 中<body> <h1>30天內自動登陸</h1><hr> <c:if test="${sessionScope.user == null}"> 遊客! <a href="${pageContext.request.contextPath }/login.jsp">登入</a> </c:if> <c:if test="${sessionScope.user != null}"> 歡迎回來,${sessionScope.user.name } <a href="${pageContext.request.contextPath }/servlet/LogoutServlet">登出</a> </c:if> </body>
3、建立 LoginServlet<body> <h1>使用者登入</h1><hr> <form action="${pageContext.request.contextPath }/servlet/LoginServlet" method="POST"> 使用者名稱<input type="text" name="name" /> 密碼<input type="password" name="password" /> <input type="checkbox" name="autologin" value="true"/>30天內自動登陸 <input type="submit" value="登入"/> </form> </body>
4、建立 AutoLoginFilterpublic class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.獲取使用者名稱密碼 String name = request.getParameter("name"); String password = MD5Utils.md5(request.getParameter("password")); //2.校驗使用者名稱密碼 String sql = "select * from user where name = ? and password = ? "; User user = null; try { QueryRunner runner = new QueryRunner(DaoUtils.getSource()); user = runner.query(sql, new BeanHandler<User>(User.class),name,password); } catch (SQLException e) { e.printStackTrace(); } if(user == null){ response.getWriter().write("使用者名稱密碼不正確"); return; }else{ //3.登入使用者 request.getSession().setAttribute("user", user); //如果使用者勾選過30天內自動登陸,傳送自動登陸cookie if("true".equals(request.getParameter("autologin"))){ Cookie autologinC = new Cookie("autologin",user.getName()+":"+user.getPassword()); autologinC.setPath(request.getContextPath()); autologinC.setMaxAge(3600*24*30); response.addCookie(autologinC); } //4.重定向到主頁 response.sendRedirect(request.getContextPath()+"/index.jsp"); } } }
public class AutologinFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
//1.只有未登入的使用者才能自動登陸
if(req.getSession(false)==null || req.getSession().getAttribute("user")==null){
//2.只有帶了自動登陸cookie的使用者才能自動登陸
Cookie [] cs = req.getCookies();
Cookie findC = null;
if(cs!=null){
for(Cookie c : cs){
if("autologin".equals(c.getName())){
findC = c;
break;
}
}
}
if(findC!=null){
//3.自動登入Cookie中儲存的使用者名稱密碼都需要是正確的才能自動登陸
String name = findC.getValue().split(":")[0];
String password= findC.getValue().split(":")[1];
String sql = "select * from user where name = ? and password = ? ";
User user = null;
try {
QueryRunner runner = new QueryRunner(DaoUtils.getSource());
user = runner.query(sql, new BeanHandler<User>(User.class),name,password);
} catch (SQLException e) {
e.printStackTrace();
}
if(user!=null){
req.getSession().setAttribute("user", user);
}
}
}
//無論是否自動登陸,都放行資源
chain.doFilter(request, response);
}
}
5、註冊過濾器
註冊
<filter>
<description>自動登陸過濾器</description>
<filter-name>AutologinFilter</filter-name>
<filter-class>com.itheima.filter.AutologinFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AutologinFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
6、登出功能
public class LogoutServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if(request.getSession(false)!=null){
request.getSession().invalidate();
//刪除自動登入 cookie
Cookie autologinC = new Cookie("autologin", "");
autologinC.setPath(request.getContextPath());
autologinC.setMaxAge(0);
response.addCookie(autologinC);
}
response.sendRedirect(request.getContextPath()+"/index.jsp");
}
}
相關推薦
JavaWeb 過濾器實現30天內自動登入
1、在 index.jsp 中 <body> <h1>30天內自動登陸</h1><hr> <c:if test="${ses
使用cookie實現一週內自動登入
一般網站的登入介面都會有自動登入的一個選項。現在就來實現一個一週內自動登入的功能。 1、如果當用戶登入的時候,在處理頁,要判斷是否選擇了自動登入,然後實現將id和name存進cookie: if($autologin){ setcookie("userid", $use
Spring Security框架下實現兩週內自動登入"記住我"功能
本文是Spring Security系列中的一篇。在上一篇文章中,我們通過實現UserDetailsService和UserDetails介面,實現了動態的從資料庫載入使用者、角色、許可權相關資訊,從而實現了登入及授權相關的功能。這一節就在此基礎上新增,登入過程中經常使用的“記住我”功能,也就是我們經常會
30天內進行python入門!
小卷我是個外行,但是對程式設計很有興趣。 小時候一直都在想象著自己可以開發一款軟體或者一款遊戲,但是由於太懶一直沒有去學習。 現在我想重拾以前的夢想,寫下日誌記錄自己學習的點點滴滴,也希望群眾一起監督(雖然並沒有人會管我哈
vue問題記錄(二):cookie實現三天內免登陸,以及記住使用者名稱密碼等
首先,我們是要在自己的專案目錄下面建立一個資料夾,如下圖 ,然後就在我標記的地方,寫關於cookie的方法,獲取cookie,設定,清除等,如下圖 程式碼如下,方便拷貝 //獲取cookie、 export functio
使用SharedPreferences實現記住密碼和自動登入
今天,來為大家分享一下通過SharedPreferences來實現QQ自動登入與記住密碼: SharedPreferences是一種輕型的資料儲存方式,它的本質是基於XML檔案儲存key-value鍵值對資料,通常用來儲存一些簡單的配置資訊。其儲存位置在/da
實現一週之內自動登入的 cookie和session還有localStorage的儲存機制
這三個應該是最讓程式設計師頭疼的了,我利用簡單的登入介面的username和password來說明一下吧. 1.cookie用來儲存使用者相關資料,儲存的位置在使用者本地: 首先是登入介面定義: <form action="server.php" method="po
密碼錯誤3次,30分鐘內無法登入原始碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq;
cookie、session及實現記住密碼,自動登入
在登入帳號、密碼框下,有三種帳號登入模式可供選擇,使用者可根據自己的具體情況選擇其中一種適合自己的模式。 1、網咖模式:勾選網咖模式後,登入的帳號會在歪歪登出/退出的時候自動清除,不會留在登入框中,可以保護自己的帳號不對外洩露,建議在外地上網時使用,比方網咖或者其他
php中實現記住密碼下次自動登入的例子
做網站的時候經常會碰到要實現記住密碼,下次自動登入,一週內免登陸,一個月內免登陸這種需求。這種功能一般都是通過cookie來實現的。本篇文章將簡單說一下如何使用php實現該需求的。當然實現該需求的方法有N多種。 整個過程就是使用者在登陸的時候,如果選擇了記住密碼或者一週內免
JavaWeb丨通過過濾器實現登入攔截及處理中文亂碼問題
“登入過濾器”就是為了防止在使用者沒有登入的情況下來訪問我們的網站。 過濾器的生命週期一般都要經過下面三個階段: 1.初始化 當容器第一次載入該過濾器時,init() 方法將被呼叫。該類在這個方法中包含了一個指向 Filter Config 物件的引用。 2.過濾 過濾器的大多數時間都消
JavaWeb 使用Filter實現使用者自動登入(教材學習筆記)
1.編寫User類 package cn.itcast.chapter08.entity; public class User { private String username; private String password; public String getUsername()
Filter過濾器實現自動登入
Filter介紹問題:Filter是什麼,它能做什麼? 1.從兩個方面來解析Filter是什麼? 1.功能 可以幫助我們對請求與響應操作進行過濾。 2.技術 Sun公司定義的一個介面,javax.servlet.Filter 2.Fil
記一次用python selenium 通過chrome+chromedriver 實現公司內網上網自動登入認證、上班自動登入打卡python指令碼筆記
背景 寫這個指令碼純屬是覺得好玩而已,一開始以為很簡單,看了大部分網上的程式碼確實很簡單就那麼幾行,自己也就想試試,後來發現由於這個還涉及了一些html的知識點發現還是沒那麼簡單的,從一開始獲取登入按鈕的input id到後面打卡按鈕無法使用發現還使用了ifr
好記性不如爛筆頭34-利用java過濾器實現使用者自動登入
在很多的網站中,都有自動登入的功能,實現自動登入的方法有很多種方式,利用JAVA過濾器也能夠實現使用者的自動登入。 1、 實現使用者自動登入的基本原理 在使用者登陸成功後,傳送一個cookie給客戶端,cookie的值為使用者名稱和md5加密後的密碼。
登入安全性 一天內連續輸入密碼錯誤3次,第二天才能登入(過了當天凌晨24點),實現原理
登入安全性 一天內連續輸入密碼錯誤3次,第二天才能登入(過了當天凌晨24點) 下面我們先在資料庫中建立一個試驗表,id,使用者名稱username,密碼pwd,次數num,時間time(date)
利用過濾器(Filter)實現自動登入功能
思路:登入成功儲存登入時Cookie以及Session,下次開啟網站通過過濾器攔截檢視Session是否存在使用者(考慮使用者沒有關閉瀏覽器的情況),如果Session中有使用者資料,放行,從Cookie中查詢使用者資料如果沒有資料,放行。 具
Filter過濾器+cookie實現自動登入和安全登入
實現思想: 我們只要登陸成功就把登入資訊儲存到cookie中,將使用者名稱存入session中,下一次進入介面只要通過AutoLoginfilter攔截獲取cookie,如果有登入資訊的cookie就取出來,進行自動登入處理,每一次訪問通過secureLo
SQL語句來查詢今天、昨天、7天內、30天的數據,經典!
diff 指定 first 內容 輸出 har edi time nth ---恢復內容開始--- 今天的所有數據:select * from 表名 where DateDiff(dd,datetime類型字段,getdate())=0 昨天的所有數據:select *
自動登陸已失敗多次,30分鐘內請手動登陸
cnblogs post 衛士 失敗 spa 恢復 跳板 class 報錯 遠程登陸跳板機時,該電腦未加入域,遇到報錯:自動登陸已失敗多次,30分鐘內請手動登陸 本地登陸正常。 解決辦法:卸載跳板機上的360安全衛士,恢復正常。 自動登陸已失敗多次,30分鐘內請手動登陸