精品秘无码一区二区三区老师-精品秘一区二三区免费雷安-精品蜜桃秘一区二区三区-精品蜜桃秘一区二区三区粉嫩-精品蜜桃一区二区三区-精品蜜臀国产aⅴ一区二区三区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

如何實現Web網站的用戶自動登錄功能

admin
2025年1月22日 12:12 本文熱度 124

    在軟件使用上,用戶體驗是一個重要的考慮因素,所以為了提高用戶的體驗,很多的應用系統中都會有自動登錄功能,如下所示的自動登錄的圖:

?

    自動登錄其實是在用戶第一次成功登錄后,應用系統將用戶的登錄狀態持久化,等用戶下次再訪問時實現自動登錄,這樣就不需用戶再次輸入用戶名和密碼。那么自動登錄如何實現呢,下面介紹通過Cookie+Token的方式實現自動登錄的功能。

1、Cookie+Token實現方案

    用戶勾選“自動登錄”選項后進行登錄時,服務端驗證用戶信息通過之后生成一個Token,然后服務端將Token寫到Cookie上并存留一段時間,用戶下次重新打開瀏覽器,瀏覽器會自動登錄,如下自動登錄的流程圖:

(1)當用戶第一次登錄系統的時候,用戶輸入用戶名和密碼進行登錄,驗證賬號與密碼通過之后,服務端生成Token,如下圖所示:

    服務端將生成的Token緩存一份到Redis上,然后將Token和用戶信息更新到數據庫中;最后服務端將Token存入用戶的Cookie中,以便后續請求使用。

(2)用戶下次再訪問服務的時候,請求中攜帶有Token的Cookie訪問服務端,服務端要從請求的Cookie中獲取Token的信息,流程圖如下所示:

    Redis中與數據庫中都驗證Token通過之后,系統直接將用戶設置成登錄狀態。至此就完成了用戶的自動登錄

2、方案實現的核心代碼

(1)用戶的登錄的核心代碼

  @PostMapping("/login")    public String login(@RequestBody User loginUser, HttpServletResponse response) {        User user = userService.queryUserByName(loginUser.getUsername());        // 用戶驗證通過        if (user != null && user.getPassword().equals(loginUser.getPassword())) {            //生成token 并保存用戶的token            String token = JWTUtils.generateToken(user);            user.setToken(token);            userService.save(user);
           //保存到redis中            stringRedisTemplate.opsForValue().set("login_token_" + token, user.getId().toString(), 7 * 24 * 60 * 60, TimeUnit.SECONDS);
           //設置cookie            Cookie cookie = new Cookie("token", token);            cookie.setPath("/");            //Cookie有效的時間存儲為一周            cookie.setMaxAge(7 * 24 * 60 * 60);            response.addCookie(cookie);            return "登錄成功";        } else {            return "用戶名或密碼錯誤";        }    }

(2)用戶自動登錄的核心代碼實現

@GetMapping("/autoLogin")    public String autoLogin(HttpServletRequest request) {        Cookie[] cookies = request.getCookies();        //無cookie        if (Objects.isNull(cookies)) {            return "自動登錄失敗";        }
       //解析cookie中的token        for (Cookie cookie : cookies) {            if ("token".equals(cookie.getName())) {                String token = cookie.getValue();                //判斷redis中是否存在token的記錄信息,如果不存在就返回                if(stringRedisTemplate.opsForValue().get("login_token_" + token) == null){                    return "自動登錄失敗";                }                //解析token                String userIdStr = JWTUtils.parseToken(token);                //通過token獲取用戶的信息                User user = userService.queryByToken(token);                if (Objects.nonNull(user) && user.getId().toString().equals(userIdStr)) {                    return "自動登錄成功了";                } else {                    return "自動登錄失敗";                }            }        }        return "自動登錄失敗";    }

總結:

    通過使用Token和Cookie的方式已實現了用戶自動登錄功能。原理是用戶第一次登錄成功之后將Token保存到Cookie中,然后用戶再次登錄時檢測Token是否有效,從而實現自動登錄的功能。


該文章在 2025/1/23 10:47:00 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 成熟妇女A片高潮免费看 | 亚洲欧美一区二区三区电影 | 久久无码人妻一区二区三区 | 色欲制服video一区巨大 | 亚洲aⅴ久久久噜噜噜噜 | 亚洲日韩乱码久久久久久 | 国产精品对白刺激久久久 | 毛片全部国产无缓冲 | 日韩高清一区二区在线观看 | 亚洲国产精品无码久久久秋霞 | 日韩国产成人高 | 欧美日韩精品视频一区二区三区 | 国产人妻久久精品一区 | 亚洲中文字幕久久无码精品A98 | 中文字幕久久精品无码综合网完整版在线观看 | 亚洲处破女av日韩精品 | 在线观看亚洲AV无码每日更新 | 99久久国产综合精品麻豆 | 2018高清国产一区二区三区 | 国产又爽又大又黄A片另类 国产又爽又大又黄A片软件 | 亚洲性无码av在线 | 鲁丝片午夜精品 | 国产在线精品观看手机在线 | 本道久久综合无码中文字幕 | 无码专区人妻系列在线 | 国产11一12周岁女毛片 | 亚洲日本高清 | 精品欧美一区二区三区在线观看 | 成人黄网站A片免费观看 | 色综合久久精品亚洲国产消防 | 亚洲日韩成人av无码网站 | 97久久精品无码一区二区天美 | 99热久久国产精品这里有 | 国产99在线视频 | 寂寞少妇做spa按摩无码 | 欧美成va视频网站 | 国产乱人伦偷精品视频不卡 | 精品国产国产精2025久久日 | 亚洲人成伊人成综合无码 | 亚洲精品自偷自拍浪潮av | 亚洲一区二区三区不卡视频 |