如下图所示,我们是springboot+dubbo+zookeeper 的项目:

关于上边的项目,master 项目即是我们的主项目,含有登录页,suiteone 、suitetwo 即是我们的从项目。facade 项目是我们分布式项目中相当于公共引用项目 一样,而userservice 项目作为我们的服务接口发布者。我们项目的实际架构我也贴了一张简单的图,方便大家理解:
实际上就是我们把我们常见的serviceImp 以及dao和数据库连接等等 这一部分抽到了zookeeper中右边service 项目里了,这里我是测试项目,就没有写suiteoneservice 、suitetwoservice ,仅仅写了userservice 项目。
关于springboot+dubbo+zookeeper 项目的实现可以参考我的另一篇文章
spring boot配置dubbo(XML)
按照上面的图,大概了解到,redis 是与master 、suiteone 、suitetwo 连接的。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-all</artifactId>
<version>1.3.2</version>
</dependency>
master 项目配置如下:
shiro.loginUrl=/login
shiro.jessionid=sessionId
spring.redis.host=192.168.1.160
spring.redis.port=6379
spring.redis.password=znxd
suite 项目配置如下:
#从项目在未登录的情况下访问的登录页,默认为主项目master的登录页
shiro.loginUrl=http://localhost:30000/login
#从项目的sessionId,名字必须与主项目的名字一致
shiro.jessionid=sessionId
#以下为redis的配置
spring.redis.host=192.168.1.160
spring.redis.port=6379
spring.redis.password=znxd
(3) 主从项目都放上相同的shiro 相关类,如下:
master 项目的配置:
suite 项目的配置:

其实关于从项目的配置不需要跟主项目的相同,在本项目中我已经能去掉的都去掉了。
因为我的数据库是用的sqlserver 你需要下载下来sql 文件,把它们改成合适的sql 导入到数据库中。
然后修改userservice 中的数据库连接配置。
启动顺序,先启动userservice项目 ,再启动master项目,最后启动suite项目。
注意,如果你已经有相关的用户那些类,你完全没必要去用我的,你只需要修改master 项目中的userRealm 和RetryLimitHashedCredentialsMatcher 类中关于UserService 和SysFuncService 接口的调用。
如果你想添加额外的从项目,你只需要仿照suiteone 或者suitetwo 写的关于shiro 配置即可。
我们是需要zookeeper ,如果你没有使用这些,你还可以把我的项目,master 项目与userservice 项目合并,并且在从项目中引用下User类,因为共享的Session 在反序列化时,需要User 类 。