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插件

  1. 继承父级项目 
  1. 添加依赖 
  1. 引入tomcat插件 
  1. 插件配置 

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配置文件

  1. 修改SpringMVC配置文件 
  1. 修改Spring配置文件 
  1. 修改mybatis配置文件
  1. 创建Mapper接口

说明:创建接口.定义namespace

 

登录操作

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.页面效果

 

posted @   项羽齐  阅读(280)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示