Rails 中的会话、子域和 authlogic 问题

发布于 2024-08-24 19:54:12 字数 331 浏览 9 评论 0原文

我有一个带有 authlogic 身份验证的 Rails 应用程序和一个使用 subdomain-fu 构建的 username.domain.com 结构。

但是当从domain.com转到username.domain.com时,我的会话中断了。我尝试添加

config.action_controller.session = {:domain => '.localhost:3000'}

到我的development.rb中,但这似乎破坏了authlogic禁用注销/登录的功能。

关于该怎么做有什么建议吗?

提前致谢!

I've got a rails app with authlogic authentication and a username.domain.com structure built with subdomain-fu.

But my session breaks when going from domain.com to username.domain.com. I've tried to add

config.action_controller.session = {:domain => '.localhost:3000'}

to my development.rb but that seams to break authlogic disabling sign out/sign in.

Any suggestions on what to do?

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

踏雪无痕 2024-08-31 19:54:12

您在开发模式下遇到此问题,但在生产模式下可能不会出现此问题..您正在尝试设置顶级 cookie。您的浏览器不会让您这样做。您想要做的

config.action_controller.session = {:domain => '.localhost:3000'}

就是

config.action_controller.session = {:domain => '.com'}

尝试创建自定义本地域,例如 localhost.localdomain 或 dummylocal.com 或其他东西,这将使其正常工作。

config.action_controller.session = {:domain => 'localhost.localdomain'}
config.action_controller.session = {:domain => 'dummylocal.com'}

you are having this issue in the development mode but probably wont have this issue in prod mode.. you are trying to set the top level cookie. your browser wont let you do that. what you are trying to do with

config.action_controller.session = {:domain => '.localhost:3000'}

is as good as saying

config.action_controller.session = {:domain => '.com'}

try creating custom local domain like localhost.localdomain or dummylocal.com or something and that will make it work.

config.action_controller.session = {:domain => 'localhost.localdomain'}
config.action_controller.session = {:domain => 'dummylocal.com'}
顾忌 2024-08-31 19:54:12

对于 Rails3,上面的代码将引发 NoMethodError

undefined method `session=' for ActionController::Base:Class

因此,对于 Rails3,您不应该更改环境配置,而应该将 app/config/initializers/session_store.rb 设置为如下所示:

YourAppName::Application.config.session_store :active_record_store,
    {:key => '_your_namespace_session', :domain => '.yourdomain.com'}

For Rails3 the code above will raise NoMethodError:

undefined method `session=' for ActionController::Base:Class

So, for Rails3 you should not change you environment config but should set your app/config/initializers/session_store.rb to look like:

YourAppName::Application.config.session_store :active_record_store,
    {:key => '_your_namespace_session', :domain => '.yourdomain.com'}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文