日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot中使用Cookie實現記住登錄的示例代碼

瀏覽:17日期:2023-05-07 18:16:58

最近在做項目,甲方提出每次登錄都要輸入密碼,會很麻煩,要求實現一個記住登錄狀態的功能,于是便使用 Cookie 實現該功能

一、Cookie 簡介

Cookie,一種儲存在用戶本地終端上的數據,有時也用其復數形式 Cookies。類型為“小型文本文件”,是某些網站為了辨別用戶身份,進行 Session 跟蹤而儲存在用戶本地終端上的數據(通常經過加密),由用戶客戶端計算機暫時或永久保存的信息。

其實 Cookie 就是一個鍵和一個值構成的,隨著服務器端的響應發送給客戶端瀏覽器。然后客戶端瀏覽器會把 Cookie 保存起來,當下一次再訪問服務器時把 Cookie 再發送給服務器。

1、Cookie 是 HTTP 協議的規范之一,它是服務器和客戶端之間傳輸的小數據2、首先由服務器通過響應頭把 Cookie 傳輸給客戶端,客戶端會將 Cookie 保存起來3、當客戶端再次請求同一服務器時,客戶端會在請求頭中添加該服務器保存的 Cookie,發送給服務器4、Cookie 就是服務器保存在客戶端的數據5、Cookie 就是一個鍵值對

SpringBoot中使用Cookie實現記住登錄的示例代碼

二、Cookie 使用

1、創建 Cookie

// Cookie 為鍵值對數據格式Cookie cookie_username = new Cookie('cookie_username', username);

2、設置 Cookie 持久時間

// 即:過期時間,單位是:秒(s)cookie_username.setMaxAge(30 * 24 * 60 * 60);

3、設置 Cookie 共享路徑

// 表示當前項目下都攜帶這個cookiecookie_username.setPath(request.getContextPath());

4、向客戶端發送 Cookie

// 使用 HttpServletResponse 對象向客戶端發送 Cookieresponse.addCookie(cookie_username);

5、銷毀 Cookie

// 根據 key 將 value 置空Cookie cookie_username = new Cookie('cookie_username', '');// 設置持久時間為0cookie_username.setMaxAge(0);// 設置共享路徑cookie_username.setPath(request.getContextPath());// 向客戶端發送 Cookieresponse.addCookie(cookie_username);

三、進入正題

上面我們已經了解了 Cookie 是什么,并且知道了 Cookie 的創建以及銷毀的方法,下面,我們就使用 Cookie 實現記住登錄狀態的功能,整個項目基于 SpringBoot 實現

1、注冊攔截器

/*** 注冊攔截器*/@Configurationpublic class WebConfigurer implements WebMvcConfigurer { @Autowired private LoginInterceptor loginHandlerInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { InterceptorRegistration ir = registry.addInterceptor(loginHandlerInterceptor); // 攔截路徑 ir.addPathPatterns('/*'); // 不攔截路徑 List<String> irs = new ArrayList<String>(); irs.add('/api/*'); irs.add('/wechat/*'); irs.add('/oauth'); ir.excludePathPatterns(irs); }}

我們攔截了所有的請求路徑,放開了 api、wechat 等請求路徑

這里可能會有一個疑問,為什么不放開請求登錄界面的 api 請求路徑呢,原因是我們攔截登錄請求,當我們請求登錄界面時,我們已經登錄過,那么我們就無需進入登錄界面,直接到主界面

我們使用了自定義的一個登錄攔截:LoginInterceptor,在第二步我們會詳細講解其中的實現原理

2、登錄攔截

/*** 未登錄攔截器*/@Componentpublic class LoginInterceptor implements HandlerInterceptor { @Autowired private LoginDao dao; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 獲得cookie Cookie[] cookies = request.getCookies(); // 沒有cookie信息,則重定向到登錄界面 if (null == cookies) { response.sendRedirect(request.getContextPath() + '/login'); return false; } // 定義cookie_username,用戶的一些登錄信息,例如:用戶名,密碼等 String cookie_username = null; // 獲取cookie里面的一些用戶信息 for (Cookie item : cookies) { if ('cookie_username'.equals(item.getName())) {cookie_username = item.getValue();break; } } // 如果cookie里面沒有包含用戶的一些登錄信息,則重定向到登錄界面 if (StringUtils.isEmpty(cookie_username)) { response.sendRedirect(request.getContextPath() + '/login'); return false; } // 獲取HttpSession對象 HttpSession session = request.getSession(); // 獲取我們登錄后存在session中的用戶信息,如果為空,表示session已經過期 Object obj = session.getAttribute(Const.SYSTEM_USER_SESSION); if (null == obj) {// 根據用戶登錄賬號獲取數據庫中的用戶信息 UserInfo dbUser = dao.getUserInfoByAccount(cookie_username); // 將用戶保存到session中 session.setAttribute(Const.SYSTEM_USER_SESSION, dbUser); } // 已經登錄 return true; }}

3、登錄請求

控制層

/** * 執行登錄 */ @PostMapping('login') @ResponseBody public String login(String username, String password, HttpSession session, HttpServletRequest request, HttpServletResponse response) { return service.doLogin(username.trim(), password.trim(), session, request, response).toJSONString(); }

業務層

/** * 執行登錄 */public JSONObject doLogin(String username, String password, HttpSession session, HttpServletRequest request, HttpServletResponse response) {// 最終返回的對象 JSONObject res = new JSONObject(); res.put('code', 0); if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) { res.put('msg', '請輸入手機號或密碼'); return res; } UserInfo dbUser = dao.getUserInfoByAccount(username); if (null == dbUser) { res.put('msg', '該賬號不存在,請檢查后重試'); return res; } // 驗證密碼是否正確 String newPassword = PasswordUtils.getMd5(password, username, dbUser.getSalt()); if (!newPassword.equals(dbUser.getPassword())) { res.put('msg', '手機號或密碼錯誤,請檢查后重試'); return res; } // 判斷賬戶狀態 if (1 != dbUser.getStatus()) { res.put('msg', '該賬號已被凍結,請聯系管理員'); return res; } // 將登錄用戶信息保存到session中 session.setAttribute(Const.SYSTEM_USER_SESSION, dbUser); // 保存cookie,實現自動登錄 Cookie cookie_username = new Cookie('cookie_username', username); // 設置cookie的持久化時間,30天 cookie_username.setMaxAge(30 * 24 * 60 * 60); // 設置為當前項目下都攜帶這個cookie cookie_username.setPath(request.getContextPath()); // 向客戶端發送cookie response.addCookie(cookie_username); res.put('code', 1); res.put('msg', '登錄成功'); return res;}

4、注銷登錄

/** * 退出登錄 */@RequestMapping(value = 'logout')public String logout(HttpSession session, HttpServletRequest request, HttpServletResponse response) { // 刪除session里面的用戶信息 session.removeAttribute(Const.SYSTEM_USER_SESSION); // 保存cookie,實現自動登錄 Cookie cookie_username = new Cookie('cookie_username', ''); // 設置cookie的持久化時間,0 cookie_username.setMaxAge(0); // 設置為當前項目下都攜帶這個cookie cookie_username.setPath(request.getContextPath()); // 向客戶端發送cookie response.addCookie(cookie_username); return 'login';}

注銷登錄時,我們需要刪除 session 里面的用戶信息,刪除 cookie 里面的用戶信息,然后請求到登錄界面

四、總結

以上就是 SpringBoot 中使用 Cookie 實現記住登錄功能,在項目中還算是比較實用的功能,希望能對正在閱讀的你一點點幫助和啟發,更多相關SpringBoot Cookie記住登錄內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产成人精选| 国产精品国产三级国产在线观看| 日韩专区欧美专区| 国模 一区 二区 三区| 亚洲综合电影| 欧美日韩中文字幕一区二区三区| 啪啪亚洲精品| 麻豆精品久久| 久久精品国产精品亚洲毛片| 精品久久91| 高清不卡亚洲| 国内精品福利| 久久免费精品| 粉嫩av一区二区三区四区五区 | 国产精品一区二区美女视频免费看 | 日本91福利区| 精品欧美日韩精品| 丝袜美腿一区二区三区| 日韩高清不卡一区二区| 最近国产精品视频| 蜜桃精品视频| 国产欧美三级| 免费精品国产的网站免费观看| 日本午夜精品一区二区三区电影 | 久久天堂影院| 日本免费新一区视频| 国产精品亚洲二区| 精品视频在线你懂得| 国产精品久久久久av蜜臀| 国产亚洲亚洲| 亚洲午夜电影| 国产精品4hu.www| 正在播放日韩精品| 日韩国产欧美在线播放| 婷婷亚洲五月色综合| 久久99伊人| 日韩国产一二三区| 精品在线播放| 欧美日韩免费看片| 久久国产视频网| 国产96在线亚洲| 久草精品视频| 国产综合婷婷| 久久精品观看| 国产精品久久久久久久久久久久久久久 | 国产欧美成人| 欧美 日韩 国产一区二区在线视频| 97久久亚洲| 日韩一区二区三区精品| 免费黄网站欧美| 国产一区二区三区网| 国产成人精选| 成人精品国产亚洲| 国产精品一区二区av日韩在线 | 麻豆国产精品一区二区三区| 日韩专区欧美专区| 欧美在线网站| 久久精品免费一区二区三区| 国产精品综合| 精品欠久久久中文字幕加勒比| 久久福利毛片| 欧美激情麻豆| 中文一区一区三区免费在线观| 亚洲午夜免费| 天堂va欧美ⅴa亚洲va一国产| 日韩中文欧美| 国产九一精品| 亚洲va在线| 在线免费观看亚洲| 三级在线观看一区二区| 激情自拍一区| 亚洲尤物在线| 日韩一级网站| 国产一区日韩一区| 久久精品国产亚洲夜色av网站| 日韩综合一区二区三区| 日本在线视频一区二区| 日韩欧美美女在线观看| 综合激情网站| 国产精品xxx| 69堂精品视频在线播放| 国产精品自在| 国产一区二区久久久久| 亚洲婷婷在线| 亚洲一区二区网站| 日韩精品一区二区三区中文在线 | 久久亚洲在线| 午夜天堂精品久久久久| 久久国产欧美日韩精品| 卡一卡二国产精品| 国产一在线精品一区在线观看| 免费国产自线拍一欧美视频| 日本久久一区| 国产一区丝袜| 亚洲影视一区二区三区| 麻豆高清免费国产一区| 99精品在线| 亚洲精品韩国| 电影91久久久| 日本成人中文字幕在线视频| 国产+成+人+亚洲欧洲在线| 女人天堂亚洲aⅴ在线观看| 欧美精品三级在线| 免费精品国产的网站免费观看| 日韩三区四区| 欧美精品激情| 色婷婷久久久| 国产精品免费精品自在线观看| 国产66精品| 欧美日韩18| 蜜桃视频一区二区| 欧美日韩中文字幕一区二区三区| 亚洲精品一级二级三级| 亚洲成人免费| 亚洲天堂1区| 午夜影院一区| 亚洲黄色免费av| 激情久久一区二区| 欧美激情久久久久久久久久久| 亚洲1区在线| 亚洲色图综合| 亚洲制服欧美另类| 伊人久久一区| 蜜桃视频免费观看一区| 日韩在线卡一卡二| 蜜臀av国产精品久久久久| 国产视频一区三区| 激情视频一区二区三区| 亚洲小说欧美另类婷婷| 免费一区二区视频| 日本中文字幕一区二区视频| 国产视频一区免费看| 亚洲我射av| 日本午夜免费一区二区| 国产精品一区二区中文字幕| 国产精品videossex久久发布| 欧美欧美黄在线二区| 久久99精品久久久久久园产越南| 麻豆久久久久久| 波多视频一区| 欧美精品自拍| 日本午夜精品久久久久| 久久黄色影视| 福利一区二区三区视频在线观看| 国产一区二区三区不卡av| 久久久久久久久99精品大| 欧美特黄一区| 欧美日韩亚洲三区| 日韩中文视频| 国产探花在线精品| 在线观看精品| 欧美精品观看| 91久久中文| 免费在线亚洲欧美| 中文无码日韩欧| 国产精品毛片| 国产人成精品一区二区三| 久久久久久久久久久妇女| 成人在线视频免费看| 国产精品毛片久久| 国产精久久一区二区| 国产欧美日韩影院| 日韩精品午夜视频| 久久成人高清| 国产不卡一区| 电影天堂国产精品| 波多野结衣一区| 久久精品欧洲| 日韩精品免费视频人成| 精精国产xxxx视频在线播放 | 成人在线视频免费| 日本成人在线一区| 亚洲欧美日韩在线观看a三区 | 精品国产欧美| 日韩av影院| 蜜臀久久久久久久| 亚洲欧美伊人| 奇米亚洲欧美| 亚洲精品婷婷| 99re国产精品| 亚洲免费观看| 欧美丝袜一区| 成人精品国产亚洲| 蜜桃久久久久| 国产精久久一区二区| 国产免费播放一区二区| 日本成人中文字幕| 天海翼精品一区二区三区| 手机精品视频在线观看| 激情婷婷亚洲| 欧美日韩国产欧| 五月天综合网站| 国产视频久久| 一区二区电影在线观看| 男女性色大片免费观看一区二区| 怡红院精品视频在线观看极品| 一区三区视频| 在线综合视频| 亚洲精品进入| 国产精品嫩草影院在线看|