美文网首页IT技术篇SpringBoot极简教程 · Spring Boot Spring Boot
青橘子的服务端 - springboot之session多域名共

青橘子的服务端 - springboot之session多域名共

作者: 茶九言 | 来源:发表于2017-11-15 21:52 被阅读102次

场景

springboot服务
现有1个主域名和3个子域名,部署了4个服务。
我需要他们在相互切换页面的时候共享一个session保持登陆状态。

qjuzi.com
article.qjuzi.com
user.qjuzi.com
book.qjuzi.com

解决办法

启用spring-redis和spring-session-redis的session共享功能。

步骤1 启动redis服务

# ubuntu16.04

$ apt-get install redis-server
$ vim /etc/redis/redis.conf        # 注掉bind,以便使用外网访问
$ service redis restart

步骤2 配置springboot

#gradle dependences
compile “todo-todo-todo”

# file: application.properties
spring.redis.host=redis.qjuzi.com
spring.redis.port=6379
@Configuration
@EnableRedisHttpSession
public class RedisSessionConfig {
    @Bean
    public CookieSerializer cookieSerializer() {
        DefaultCookieSerializer defaultCookieSerializer = new DefaultCookieSerializer();
        defaultCookieSerializer.setCookieName("sessionId"); //cookie 名字
        defaultCookieSerializer.setDomainName("qjuzi.com"); // 域
        defaultCookieSerializer.setCookiePath("/"); // 存储路径
        return defaultCookieSerializer;
    }
}
@Controller
public class SessionTestController {
    @ResponseBody
    @RequestMapping("/getSession")
    public String getSession(HttpServletRequest request) {
        return request.getSession().getId();
    }
}

步骤3 启动多个服务

这里我启用两个服务来测试。

# file:application.properties
# 修改端口参数,用端口8080和9090

server.port=8080
# 控制台1
# server.port=8080
$ gradle bootRun

# 控制台2
# server.port=9090
$ gradle bootRun

步骤4 nginx反向代理配置

server {
    listen       80;
    server_name  article.qjuzi.com;

    location / {
        proxy_pass   http://localhost:8080/;
    }
}

server {
    listen       80;
    server_name  book.qjuzi.com;

    location / {
        proxy_pass   http://localhost:9090/;
    }
}

步骤5 浏览器测试

测试结果如下,获得了同样的Session Id.

book.qjuzi.com/getSession     >  051214ea-257b-4e65-8af2-65236120ede9
article.qjuzi.com/getSession  >  051214ea-257b-4e65-8af2-65236120ede9

提示

正式环境下,redis需要采用稳定的服务,不对外部开放

参考及引用

httpsession-redis
Spring Session - HttpSession (Quick Start)

相关文章

网友评论

本文标题:青橘子的服务端 - springboot之session多域名共

本文链接:https://www.haomeiwen.com/subject/qjkcvxtx.html