14、sso单点登陆
1.2 SSO(单点登录系统)
1.2.1 架构设计
说明:采用SSO单点登录系统后需要做如些的配置
1.当用户进行登录操作时,访问的是单点登录系统
2.当单点登录系统接收用户的请求时,根据用户名和密码判断是否有效,如果有效则返回给客户端ticket加密信息.并且将ticket:userJSON数据保存到redis中,方便其他系统获取信息.
3.当前端系统获取ticket后将信息保存到cookie中.方便获取.
1.2.2 图解单点登录
说明:
自行将图上的信息补全.
1.当用户登陆时,前台系统访问登陆系统进行登录操作
2.根据用户名和密码进行登录之后返回给客户端ticket.将用户信息写入redis缓存中
3.客户端将ticket保存到cookie中
1.3 创建单点登录系统
1.3.1 选择骨架创建项目
1.3.2 添加tomcat插件
- 继承父级项目
- 添加依赖
- 引入tomcat插件
- 插件配置
1.3.3 配置nginx
说明:当用户访问sso.jt.com转向该服务器.修改完成后重启nginx
#京淘单点登录系统
server {
listen 80;
server_name sso.jt.com;
#页面转向 转向的是一个具体的url
location / {
proxy_pass http://localhost:8093;
}
}
1.3.4 修改hosts文件
# 京淘电商环境
127.0.0.1 image.jt.com
127.0.0.1 manage.jt.com
127.0.0.1 www.jt.com
127.0.0.1 sso.jt.com
127.0.0.1 cart.jt.com
127.0.0.1 order.jt.com
127.0.0.1 solr.jt.com
1.4 修改配置文件
1.4.1 拷贝配置文件
1.4.2 导入web.xml配置文件
1.4.3 修改Spring配置文件
- 修改SpringMVC配置文件
- 修改Spring配置文件
- 修改mybatis配置文件
- 创建Mapper接口
说明:创建接口.定义namespace
2 登录操作
2.1 转向登录和注册页面
2.1.1 转向页面
2.2 用户注册校验
2.2.1 页面分析
2.2.2 接口文档定义-注册
2.2.3 编辑pojo对象
package com.jt.sso.pojo;
2.2.4 编辑Controller
2.2.5 编辑Service
2.2.6 定义Mapper
2.3 用户注册
2.3.1 页面分析
说明:根据浏览器获取url
说明:查询页面的js.查询返回值结果
说明:查询代码的方法
通过EverEdit工具实现代码查询
2.3.2 编辑Controller
2.3.3 编辑Service
2.3.4 编辑SSOController
说明:包路径: package com.jt.sso.controller;
@RequestMapping("/register")
@ResponseBody
public SysResult saveUser(User user){
try {
String username = userService.saveUser(user);
return SysResult.oK(username);
} catch (Exception e) {
e.printStackTrace();
return SysResult.build(201, "新增用户失败");
}
}
2.3.5 编辑后端Service
说明: package com.jt.sso.service
@Override
public String saveUser(User user) {
//为User信息补全数据
user.setPassword(DigestUtils.md5Hex(user.getPassword())); //将密码加密
user.setEmail(user.getPhone()); //用电话号码代替邮箱
user.setCreated(new Date()); //设定时间
user.setUpdated(user.getCreated());
//将user进行入库操作
userMapper.insert(user);
//将用户名返回
return user.getUsername();
}
2.4 用户登陆
2.4.1 页面分析
2.4.2 编辑前台的Controller
2.4.3 编辑前台service
说明:进行用户登陆 跨域访问
包路径: package com.jt.web.service;
/**
* 1.定位目标uri
* 2.准备数据
* 3.发出请求
* 4.解析数据
* 5.返回数据
*/
@Override
public String findUserByUP(User user) {
String uri = "http://sso.jt.com/user/login";
Map<String, String> map = new HashMap<String,String>();
map.put("u", user.getUsername());
map.put("p", user.getPassword());
try {
String resultJSON =
httpClientService.doPost(uri, map);
SysResult sysResult =
objectMapper.readValue(resultJSON, SysResult.class);
//获取服务端数据
String ticket = (String) sysResult.getData();
return ticket;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
2.4.4 编辑后台Controller
2.4.5 编辑Service
2.4.6 编辑Mapper接口
1.编辑接口文件
public interface UserMapper extends SysMapper<User>{
//根据列名和参数查询记录总数
int findCheckUser
(@Param("cloumn")String cloumn,@Param("param")String param);
//根据用户名和密码查询用户信息
User findUserByUP(@Param("username")String username,
@Param("password")String password);
}
2.编辑配置文件
2.4.7 作业:
完成根据ticket回显用户信息
Js调用:
2.页面效果
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步