Redis+SSO初步

经过好几天的查找和各种追问,今天终于算是对sso有个大概的了解,不过在网上sso大部分都需要依赖于Redis,所以我这里先安装Redis
由于电脑问题安装不了Linux,我就直接安装Windows版本的Redis,如果你们可以安装的话也可以自己尝试下

1.打开官网http://redis.io/点击Download

官网下载

2.往下拉,找到windows,

由图片中的文字可以看出Redis项目不正式支持Windows。 但是,Microsoft开放技术小组开发和维护这个Windows端口针对Win64。

官网描述

3.点击后,会发现其实是跳转到了微软的GitHub地址 redis下载,然后选择你喜欢的版本zip或msi下载。

如果第二步找不到Windows,直接打开链接即可
官网下载

4.我下载的是zip文件,所以这里以zip文件为例,直接解压就可以,大概是这个样子

资源管理器截图
之后打开Redis所在的目录,在此处打开命令行窗口或者运行进入到此目录
执行命令:redis-server.exe redis.windows.conf --maxmemory 200M
其中–maxmemory 200M是选填的,如果你配置文件redis.windows.conf中配置,这个就可以省去,如果没配置,这个可以加也可以不加,你开心就好

命令行截图
当出现此界面的时候,就说明启动成功了,监听端口6379,然后测试一下效果
重新打开一个dos执行redis-cli.exe命令或者直接打开redis-cli.exe,效果如图:(具体语法自己百度)
命令行截图

在这里我们先来稍微捋一下sso的概念

单点登录(sso):一次登录,处处穿梭

我们可以举个例子,可以理解为一卡通,即办了一张卡就可以在这个范围之内都能够使用,例如在校园里,一张学校卡可以用于食堂吃饭,浴室洗澡,进出校门等活动,而不是说到食堂办一张卡,到浴室再办一张,进出校门还得再办一张

应用体验:

新浪(微博,博客)
在博客上登录了再刷新微博页面,可以直接免登录(这里就不放图了,想体验的自己去看下就好)

具体效果:

提升用户体验,便于用户操作,使得给人感觉像是一个整体而不是分散开来,更能提高用户的认可,提升企业形象(这一部分也是了解就好)

接下来是sso的分类

sso可以分为同域sso(不同的应用位于同一个域名下)和跨域sso(不同应用位于不同域名下)

然后是SpringBoot+Redis单点登录的session共享的实现

首先,单点登录(sso)就是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,
先实现一个用SpringBoot和Redis来完成session共享的案例

1.导入相关依赖(web和redis相关)

maven依赖截图
为了预防有打错单词的,我直接放在这里,复制到pom.xml文件中就可以了:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- redis -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.session</groupId>
  <artifactId>spring-session-data-redis</artifactId>
</dependency>

这里要注意,因为我之前说的Redis安装是Windows版的,有可能会出现Redis配置问题,如果出现了建议修改一下,将2.0.4.RELEASE修改为2.0.2.RELEASE,或者可参考解决方式:
https://www.cnblogs.com/gudi/p/7823557.html
maven依赖截图
如果没有出现问题那么恭喜你,不需要改了
这里顺便做一下测试,在测试类中编写,注意看清楚位置,不要写错地方
代码截图
然后直接运行,如果不报错,则成功
我们可以再看一下Redis中的值,重复上述内容中安装Redis的最后一步,运行redis-cli.exe,再输入keys *命令,效果如图:
命令行截图
这里要顺口提一句,在程序set值的时候,会自动添加前缀,在get时也会自动忽略掉前缀。一样可以获取得到:
代码截图

2.配置Redis

代码截图

3.配置application.yml文件,端口的设置以及redis连接地址和端口号配置

这里顺口提一句,yml就是springboot的配置文件,优化了xml,可以直接理解为超级xml,放在这个位置,把原有的properties文件删掉
配置截图
为了模拟共享,所以我们需要开启另一个服务,server端口号可以设置成8081,其他保持不变
即再创建一个项目,也是同样的配置,只是这里端口号不同即可
配置截图
为了预防有打错单词的,我直接放在这里,复制到application.yml文件中就好:

server:
  port: 8080
spring:
  redis:
    host: localhost
    port: 6379

4.控制层代码

代码截图
运行,如果出现报错则在测试类中添加一个注解
代码截图

5.运行server8080和server8081(如下图运行方式)

代码截图
先访问http://localhost:8080/admin/setSessionId设置sessionId
再访问另一个服务http://localhost:8081/admin/getSessionId获取sessionId
浏览器截图
ok,以上就是Redis+SSO的基本实现啦!~
很基础的教程,如果有错误的地方还请轻喷~

猜你喜欢

转载自blog.csdn.net/qq_41033290/article/details/84889484
sso