电商(10)

电商第十天:
单点登录(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")
上一篇:nuxt全栈仿美团官网07——登录


下一篇:Matlab读取CSV文件,并进行矩阵处理