liyupi/sql-father-backend-public

前后端分离部署时,登录功能失效

AIpolaris opened this issue · 9 comments

当前端和后端分离部署,即部署在两台机器上时,登录之后任然会显示未登录,可能是session作用域的问题

表示部署在同一台都失效了,但是在本机启动时可以。

有结果了吗

有没有可能是与谷歌浏览器不兼容,换个浏览器试试

如果部署后没办法登录的原因是因为nginx导致的两次cookie不同。
我这边用的是nginx部署的,最后是修改了这部分就成功了
location /api {
proxy_pass http://localhost:8102/api;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cookie_path / /;
proxy_set_header Cookie $http_cookie;
proxy_cookie_flags ~ nosecure samesite=strict; }

如果部署后没办法登录的原因是因为nginx导致的两次cookie不同。 我这边用的是nginx部署的,最后是修改了这部分就成功了 location /api { proxy_pass http://localhost:8102/api; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-PORT $remote_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cookie_path / /; proxy_set_header Cookie $http_cookie; proxy_cookie_flags ~ nosecure samesite=strict; }

使用此方法解决部署时不能登录的问题

还是不行

还是不行

如果是使用了nginx的话可以参考一下上面nginx的配置,我这边使用了之后可以解决了

thxcn commented

我用这个方法也不行。不知道怎样设置,我看请求标头上并没有cookie,但是通过IDEA运行是有的

那是因为你前端调后端接口的URI前缀不一样导致的,需要在后端的配置文件里加上你nginx配置的后端接口前缀:

server:
  address: 0.0.0.0
  port: 8102
  servlet:
    context-path: /api  # here
    # session 30 天过期
    session:
      timeout: "P30D"
      cookie:
        same-site: none
        secure: true