第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十天】(单点登录系统实现)

时间:2019-10-22
本文章向大家介绍第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十天】(单点登录系统实现),主要包括第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十天】(单点登录系统实现)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040

第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第六天】

第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第七天】(redis缓存)

第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第八天】(solr服务器搭建、搜索功能实现)

第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第九天】(商品详情页面实现)

第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十天】(单点登录系统实现)

2   课程计划

1、单点登录系统SSO

a)       创建单点登录系统,独立的工程。

b)       发布登录、注册的接口

c)       单点登录系统实现登录、注册功能。


3  什么是单点登录系统

3.1   什么是SSO

SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。

3.2   传统的登录流程

3.2.1   传统流程中的问题:

在集群环境中。需要把同一套代码部署到多台服务器上。每个工程都有自己独立的session

在集群环境中每个工程都有自己的session,如果把用户信息写入session而不共享的话,会出现用户反复登录的情况。


第二种方案

实现单点登录系统,提供服务接口。把session数据存放在redis。

Redis可以设置key的生存时间、访问速度快效率高。

优点:redis存取速度快,不会出现多个节点session复制的问题。效率高。

SSO单点登录系统一般流程

4   创建单点登录系统

单点登录系统是一个独立的工程。需要操作redis、连接数据库。

 注册之前的数据校验

Service层

/**
 * 用户管理Service
 * 
 * @author kangy
 *
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private TbUserMapper userMapper;

    @Override
    public TaotaoResult checkData(String content, Integer type) {
        // 创建查询条件
        TbUserExample example = new TbUserExample();
        TbUserExample.Criteria criteria = example.createCriteria();

        // 对数据进行校验:1、2、3分别代表username、phone、email
        if (1 == type) {
            criteria.andUsernameEqualTo(content);

        } else if (2 == type) {
            criteria.andPhoneEqualTo(content);

        } else {
            criteria.andEmailEqualTo(content);
        }
        // 执行查询
        List<TbUser> list = userMapper.selectByExample(example);

        if (list == null || list.size() == 0) {
            return TaotaoResult.ok(true);
        }

        return TaotaoResult.ok(false);
    }

}

5.1.4    Controller层

从url中接收两个参数,调用Service进行校验,在调用Service之前,先对参数进行校验,例如type必须是1、2、3其中之一。

返回TaotaoResult。需要支持jsonp。

=======================================

参考资料:

未完待续。。。

原文地址:https://www.cnblogs.com/MarlonKang/p/11718009.html