ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

电商(10)

2019-09-06 21:41:23  阅读:277  来源: 互联网

标签:10 登录 用户 token passport atguigu 电商 com


电商第十天:
单点登录(SSO):一处登录,处处使用!

登录的发展史:
单一架构:用户登录之后,将用户信息存储在session 中!

分布式架构:用户还是否能存储在 session 中?
			不能! session 存在服务器,多个!每个服务器都有自己的session。
			认证中心--单独作为一个模块来使用!https://passport.jd.com
			
			将用户存储在哪?
				存储用户信息的位置,必须要贯穿于每个项目模块!为了提高项目模块访问速度,则redis 是一个明智之选!
			redis
				
				
单点登录流程介绍:
	token:令牌
	1.	先检查cookie 中是否有token
	2.	true : 已经登录
		false:	提示用户登录,跳转到登录页面
		2.1	输入用户名,密码跟数据库做比较 ,生成一个令牌token
			true:将token 放入cookie!
		2.2	只要用户一登录,可以访问任何一个模块!
	-------------------------------------------------------------
	demo.	动物园:

1.	搭建项目gmall-passport-web
	修改配置文件
	导入静态文件
	编写控制器	测试!
	
2.	解析index.html
	京东:
	用户从https://www.jd.com/ 点击到了登录
	用户登录https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F
															 https%3A%2F%2Fwww.jd.com%2F
															 
3.	做用户登录
	3.1	得到用户的用户名,密码与后台数据进行匹配
	3.2	匹配成功之后,将用户信息放入redis
	3.3	登录成功之后,制作一个token 并返回给前台页面!
	
	功能开发:
	bean,mapper,service,service.impl, controller
	
	3.1	如何利用JWT 制作token
		引入jwt
			<dependency>
				<groupId>io.jsonwebtoken</groupId>
				<artifactId>jjwt</artifactId>
				<version>0.9.0</version>
			</dependency>
	3.2	配置nginx.conf
		
		upstream passport.atguigu.com{
		   server 192.168.67.1:8087;
		}
	   server {
		 listen 80;
		 server_name passport.atguigu.com;
		 location / {
			proxy_pass http://passport.atguigu.com;
			proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
		 }
		}
4.	cookie 技术
	cookie 与 session 区别!
		setDoMain:设置cookie 共享
		setPath:设置访问目录
5.	用户的认证:
	5.1	利用key,salt 解密token 能够得到用户的信息{userInfo.getId()}
	5.2 利用解密出来的userId 去缓存查找一下用户信息是否存在!如果存在,已经登录。每页存在认证失败!
	
	
	测试:
		http://passport.atguigu.com/index?originUrl=http%3A%2F%2Fitem.gmall.com%2F38.html
		
		登录成功之后获取到token
		http://item.gmall.com/38.html?newToken=eyJhbGciOiJIUzI1NiJ9.eyJuaWNrTmFtZSI6IkF0Z3VpZ3UiLCJ1c2VySWQiOiIxIn0.XzRrXwDhYywUAFn-ICLJ9t3Xwz7RHo1VVwZZGNdKaaQ
		
		认证:
		http://passport.atguigu.com/verify?token=eyJhbGciOiJIUzI1NiJ9.eyJuaWNrTmFtZSI6IkF0Z3VpZ3UiLCJ1c2VySWQiOiIxIn0.XzRrXwDhYywUAFn-ICLJ9t3Xwz7RHo1VVwZZGNdKaaQ&currentIp=192.168.67.1
6.	业务整合
	6.1	显示登录之后的用户名
		从token 中获取用户名,并保存,到前台页面获取即可!
		
	6.2	如果用户访问需要登录的模块时。用户处于非登录状态应该跳转到登录页面!
		
7.	验证用户是否需要登录
	自定义注解:
	
	测试:usermanage ,manageservice,listservice,passport,itemweb
	
	调试顺序:
		断点:  String currentIp = request.getHeader("X-forwarded-for");
				if ("success".equals(result)){
				 
				 }
		
		打了断点但是不进断点:
			说明:扫描@ComponentScan(basePackages ="com.atguigu.gmall1205")

标签:10,登录,用户,token,passport,atguigu,电商,com
来源: https://blog.csdn.net/weixin_44050355/article/details/100586892

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有