我已经在Apartment(1.2.0)和Devise(4.2.0)中设置了Rails 5应用程序.由于一些DDNS问题,存在约束,即应该只能访问应用程序app.myapp.com(注意子域app).myapp.com重定向到app.myapp.com.
我的用例是,每个注册到应用程序的用户(租户)都应该通过他们的子域(例如tenant.myapp.com)访问他们的特定数据.不应将用户限定为其子域.基本上应该可以从任何子域登录.重定向到租户的正确子域由ApplicationController.处理.根据Devise标准,登录页面位于app.myapp.com/users/sign_in.这就是问题的开始:
由于"电子邮件或密码不正确"错误,用户无法登录.
在开发过程中我玩了一下.从lvh.me作品中登录完美.用户已登录并重定向到其子域.尝试相同app.lvh.me会导致上述问题.
我已将会话存储设置为:
# /config/initializers/session_store.rb
Rails.application.config.session_store :cookie_store, key: '_myapp_session', domain: {
production: '.app.myapp.com',
staging: '.app.myapp.com',
development: '.app.lvh.me'
}.fetch(Rails.env.to_sym, :all)
Run Code Online (Sandbox Code Playgroud)
我也尝试过以下方法:
Rails.application.config.session_store :cookie_store, key: '_myapp_session', domain: :all
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能从任何子域登录?
测试案例将是:
用户user1访问网址app.myapp.com/users/sign_in提供其凭据,因此登录并重定向到user1.myapp.com.
奖励:user1访问网址another_user.myapp.com/users/sign_in提供他们的凭据,因此登录并重定向到user1.myapp.com.
其他相关配置:
# /config/initializers/apartment.rb
config.excluded_models = %w{ User }
config.tenant_names = lambda { …Run Code Online (Sandbox Code Playgroud) 我在 Spring Boot 应用程序中使用 ws(非安全 WebSocket)。一旦客户端尝试连接到服务器,就会出现以下错误:
\nHandshake failed due to invalid Upgrade header: null
Spring Boot 应用程序在 Apache 代理后面的 Ubuntu 服务器上运行。Apache配置如下:
\n<VirtualHost *:80>\n DocumentRoot /var/www/myapp/public/\n ServerAdmin webmaster@localhost\n ServerName app.myapp.biz\n\n RewriteEngine On\n RewriteCond %{HTTP:Upgrade}^websocket$ [NC,OR]\n RewriteCond %{HTTP:Connection}^upgrade$ [NC]\n RewriteRule .* "ws:/127.0.0.1:8096/$1" [P,QSA,L]\n\n ProxyPreserveHost On\n ProxyRequests Off\n ProxyPass / http://127.0.0.1:8096/\n ProxyPassReverse / http://127.0.0.1:8096/\n RequestHeader set X-Forwarded-Proto http\n RequestHeader set X-Forwarded-Port 80\n\n SetEnv mongo_username aUser\n SetEnv mongo_password aPassword\n</VirtualHost>\nRun Code Online (Sandbox Code Playgroud)\n这application.properties的如下:
debug=false\nserver.port=8096\nserver.address=127.0.0.1\n\nserver.forward-headers-strategy=native\nserver.tomcat.use-relative-redirects=true\nserver.tomcat.remoteip.protocol-header=x-forwarded-proto\nserver.tomcat.remoteip.remote-ip-header=x-forwarded-for\nserver.tomcat.remoteip.port-header=x-forwarded-port\nRun Code Online (Sandbox Code Playgroud)\n当在我的开发机器上运行应用程序时,一切正常。一旦部署到服务器上就会出现上述错误。我\xe2\x80\x99已经用谷歌搜索了很多,但无法\xe2\x80\x99找到针对这个问题的具体内容。我希望有人能帮帮忙。
\n信息:尝试连接的前端应用程序是一个 Angular 应用程序,使用 …