中文字幕一区二区三区在线中文-日本中文字幕 在线观看-欧美日韩国产亚洲综合-性色AV一二三天美传媒

廣州總部電話:020-85564311
20年
互聯(lián)網(wǎng)應(yīng)用服務(wù)商
廣州總部電話:020-85564311
20年
互聯(lián)網(wǎng)應(yīng)用服務(wù)商
請輸入搜索關(guān)鍵詞
知識庫 知識庫

優(yōu)網(wǎng)知識庫

探索行業(yè)前沿,共享知識寶庫

如何實現(xiàn)自動登錄的功能

發(fā)布日期:2025-01-28 10:32:25 瀏覽次數(shù): 1058 來源:龍蝦編程

    在软件使用上,用户体验是一个重要的考虑因素,所以为了提高用户的体验,很多的应用系统中都会有自动登录功能,如下所示的自动登录的图:

    自动登录其实是在用户第一次成功登录后,应用系统将用户的登录状态持久化,等用户下次再访问时实现自动登录,这样就不需用户再次输入用户名和密码。那么自动登录如何实现呢,下面介绍通过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 并保存用户的tokenString 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);
//设置cookieCookie 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();//无cookieif (Objects.isNull(cookies)) {return "自动登录失败";}
//解析cookie中的tokenfor (Cookie cookie : cookies) {if ("token".equals(cookie.getName())) {String token = cookie.getValue();//判断redis中是否存在token的记录信息,如果不存在就返回if(stringRedisTemplate.opsForValue().get("login_token_" + token) == null){return "自动登录失败";}//解析tokenString 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是否有效,从而实现自动登录的功能。

優(yōu)網(wǎng)科技,優(yōu)秀企業(yè)首選的互聯(lián)網(wǎng)供應(yīng)服務(wù)商

優(yōu)網(wǎng)科技秉承"專業(yè)團(tuán)隊、品質(zhì)服務(wù)" 的經(jīng)營理念,誠信務(wù)實的服務(wù)了近萬家客戶,成為眾多世界500強(qiáng)、集團(tuán)和上市公司的長期合作伙伴!

優(yōu)網(wǎng)科技成立于2001年,擅長網(wǎng)站建設(shè)、網(wǎng)站與各類業(yè)務(wù)系統(tǒng)深度整合,致力于提供完善的企業(yè)互聯(lián)網(wǎng)解決方案。優(yōu)網(wǎng)科技提供PC端網(wǎng)站建設(shè)(品牌展示型、官方門戶型、營銷商務(wù)型、電子商務(wù)型、信息門戶型、微信小程序定制開發(fā)、移動端應(yīng)用(手機(jī)站、APP開發(fā))、微信定制開發(fā)(微信官網(wǎng)、微信商城、企業(yè)微信)等一系列互聯(lián)網(wǎng)應(yīng)用服務(wù)。


我要投稿

姓名

文章鏈接

提交即表示你已閱讀并同意《個人信息保護(hù)聲明》

專屬顧問 專屬顧問
掃碼咨詢您的優(yōu)網(wǎng)專屬顧問!
專屬顧問
馬上咨詢
掃一掃馬上咨詢
掃一掃馬上咨詢

掃一掃馬上咨詢