Gem 关于 Devise 的验证返回 URL 路径问题

ikebukuro · 2012年05月13日 · 最后由 ikebukuro 回复于 2012年05月13日 · 2390 次阅读

WEB 服务器是 Apache + Passenger

Apache 的 virtualhost 的配置: vi /etc/httpd/conf.d/virtualhost.conf

<VirtualHost *:80>
  ServerName my-domain.com
  DocumentRoot /var/www/html/
  RailsBaseURI /project
</VirtualHost>

这样访问程序的 URL 就是: http://my-domain.com/project/

用 Devise,在子目录中做登录与否验证,如: http://my-domain.com/project/member/admin

如果用户没登录,跳转到登录页面,应该为: http://my-domain.com/project/users/sign_in

结果却是: http://my-domain.com/users/sign_in

这显然错了。为什么这样呢?

试了 3 种 Devise 与 CanCan 的验证方式,代码如下:

1 class UsersController < ApplicationController
2   before_filter :authenticate_user!
3   # Second Authorization Example: with CanCan
4   # load_and_authorize_resource :only => :index
5   # Third Authorization Example: without CanCan
6   # before_filter :only_allow_admin, :only => [ :index ]
7 (略)

结果都一样,应该和这个无关,问题出在哪呢?

Rails 最好不要跑到二级目录下面

嗯,最好是不要,正规也不该这么做。 现在这样做的好处是同时跑多个 Rails 方便。 其他还没什么问题,只是现在用 Devise 出问题了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号