總共有3個模塊基于微服務,解決session共享,遇到的問題,結果在文末,
1.eureka(注冊中心)
1.1啟動類
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
1.2application.properties
spring.application.name=eureka-server
server.port=8000
eureka.instance.hostname=localhost
eureka.client.fetch-registry=false
eureka.client.register-with-eureka=false
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
2.用戶模塊
2.1控制器
/**
* 登錄
*/
@RequestMapping("/login")
@ResponseBody
public Response login(@RequestParam("userName") String userName,
@RequestParam("password") String password, HttpSession session){
User user = userService.login(userName, password);
//保存用戶資訊時,不保存密碼
user.setPassword(null);
session.setAttribute(Constant.USER, user);
return Response.success(user);
}
/**
* 更新個性簽名
*/
@RequestMapping("/user/update")
@ResponseBody
public Response updateUserInfo(HttpSession session, @RequestParam String signature){
User currentUser = (User) session.getAttribute(Constant.USER);
User user = new User();
user.setId(currentUser.getId());
user.setPersonalizedSignature(signature);
userService.updateInformation(user);
return Response.success();
}
2.2application.properties
spring.application.name=cloud-user
spring.session.store-type=redis
spring.redis.host=localhost
spring.redis.port=6379
2.3啟動類
@SpringBootApplication
@EnableSwagger2
//多個這個注解,原始碼就是查找"SESSION"的cookie
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 86400 * 30)
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
3.網關模塊
3.1application.properties
server.port=8083
spring.session.store-type=redis
spring.redis.host=localhost
spring.redis.port=6379
#spring.redis.password=
#為了解決session共享問題,客戶端請求不過濾
zuul.sensitive-headers=
zuul.host.connect-timeout-millis=15000
zuul.prefix=/
zuul.routes.cloud-mall-user.path=/user/**
zuul.routes.cloud-mall-user.service-id=cloud-user
測驗
這個是使用login介面登錄成功的截圖

這個是使用login介面登錄成功的存入session截圖

這個是使用測驗介面截圖,session沒有共享

瀏覽器


結果是,使用ApiPost工具進行session共享后,從redis中獲取不到"SESSION"的cookie,進而獲取不到sessionId,使用瀏覽器可以訪問到,
自己也寫了一個簡單的demo也獲取不到,
避免大多數小白入坑,撰寫這篇文章,有知道解決這個為何使用工具不可以,歡迎進行討論
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292922.html
標籤:其他
