首页 > 编程知识 正文

使用cookie简化用户登录(vue 单点登录)

时间:2023-05-03 19:26:17 阅读:68676 作者:4968

什么是使用单点登录——cookie进行单点登录? 在多系统中,当用户在一个系统上执行登录操作时,其他系统也会自动登录,用户访问其他系统时无需再次登录。

典型例子:淘宝和天猫。 在一个浏览器中,用户登录淘宝,访问天猫,就会发现天猫也处于登录状态。

怎么实现? 实现单点登录的方法有很多,本文谈谈最简单实用的——使用Cookie实现单点登录。

闲话,项目故事:

这个项目有四个系统,使用springboot构建,前后端不分离,使用thymeleaf。

login登录系统,端口9000,url:login.codeshop.commain主系统,端口9010,url:www.codeshop.comvip系统,端口9011,uu ath : if=' $ { session.loginuser==null } ' href=' 3358 log in.codeser } target=http://VIP.codeshop.com :9011 翻页: publicstringtologin (@ request param (requirest default value=' ' ) String target,HttpSession session,@ cookie valalue 当您直接从value='token'(cookiecookie ) if(stringutils.isempty ) target )//登录页面进入时,默认情况下首页target=' http://www=null (string value=cookie.getvalue ); useruser=logincacheutil.loginuser.get (value; If (用户!=null } {返回目标; //重定向目标session.setattribute('target ',target ); 返回' log in '; }此处将跳转到的url保存在session中,登录完成后使用

输入用户信息后,后台检查登录信息并返回原始页面。 //伪装的用户信息privatestaticlistuserusers=new ArrayList (; static{users.add(newuser(0,' yinjw ',' yinjw ' ) ) USERS.add(newuser(1,' yinwei ',' yinwei ' ) ); USERS.add(newuser(2,' Javee ',' Javee ' ); } @ postmappingpublicstringdologin (useruser,HttpSession session,HttpServletResponse response ) string target=(字符串) optionaluserfirst=users.stream (.filter ) user1-user1.getusername ).equals (user.getusername ) ) user1. ) if(first.ispresent () /随机tokenstringtoken=uuid.random uuid ).toString ); cookiecookie=newcookie('token ',token ); cookie.setdomain(codeshop.com); response.addcookie(cookie ); 将token和用户信息转换为logincacheutil.loginuser.put (token,first.get ) ); } else { session.set attribute (' msg ','用户名或密码错误); 返回' log in '; } return 'redirect:' target; } User类:

@ data @ noargsconstructor @ allargsconstructor @ accessors (chain=true )公共类用户{私有类用户}; 私有字符串用户名称; 私有字符串密码; } LoginCacheUtil.loginUser是模拟redis缓存的映射。

publicclasslogincacheutil { publicstaticmapstring,User loginUser=new HashMap (; }用户直接访问某个系统并在后端进行cookie验证: @ autowiredprivateresttemplateresttemplate; @getmapping(/index ) ) publicstringgovip ) ) cookievalue ) required=false,value='TOKEN ' ) Cookie cookie,http sessiral=null (//tokenstringtoken=cookie.getvalue ); if (! 从stringutils.isempty(token ) token登录的用户信息mapresult=rest template.getforobject (http://log in.codeshop.com 336666 TTT sssion.setattribute('loginuser ',result ); } }返回'索引'; }前端由会话中是否存在loginUser控制。 h1欢迎访问VIP页面/h1 span ath : if=' $ { session.loginuser==null } ' href=' 3358 log in.codesher target=http://VIP.ccoll aath : unless=' $ { session.loginuser==null } ' href target=http://VIP.codeshop.com :9011/view/index '退出/th : text=' $ { session.loginuser.username } '/span已登录/p这就完成了一个简单的单点登录项目

如何获取源代码? 源代码均已上传或直接下载到本人的github仓库

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。