0

我正在使用设计开发用户身份验证。登录页面类似于 localhost:3000/users/sign_in。登录成功后(一个 Post 请求),用户被重定向到主页(localhost:3000/)。这是意料之中的,我确实看到浏览器中加载了主页内容。

但是浏览器地址栏依然显示原来的请求url为localhost:3000/users/sign_in

知道为什么会这样吗?是设计配置还是 Rails 服务器?我在这里没有太多自己的代码,几乎只是与我的用户模型的默认设计选项挂钩。

以下是我的部分路线:

new_user_session GET  /users/sign_in(.:format)  devise/sessions#new
user_session     POST /users/sign_in(.:format)  devise/sessions#create
root                  /                         home#index

谢谢!

4

2 回答 2

1

这是来自最新设计版本的代码块

文件:../gems/devise-2.1.2/app/controllers/devise/sessions_controller.rb

# POST /resource/sign_in
def create
  resource = warden.authenticate!(auth_options)
  set_flash_message(:notice, :signed_in) if is_navigational_format?
  sign_in(resource_name, resource)
  respond_with resource, :location => after_sign_in_path_for(resource)
end

def after_sign_in_path_for(resource_or_scope)
  stored_location_for(resource_or_scope) || signed_in_root_path(resource_or_scope)
end

def signed_in_root_path(resource_or_scope)
  scope = Devise::Mapping.find_scope!(resource_or_scope)
  home_path = "#{scope}_root_path"
  if respond_to?(home_path, true)
    send(home_path)
  elsif respond_to?(:root_path)
    root_path
  else
    "/"
  end
end

例如,如果您将 root 配置为 Home#Index,并且before_filter :authenticate_user!在输入用户名和密码后受到保护,则 url 必须是您的域名。

于 2012-11-29T21:19:47.227 回答
0

原来它有某事。与我的 jquery mobile 包含有关。这里的这个链接解决了我的问题:

rubyrails 使用 jquery mobile,重定向不更改 url

于 2012-12-10T06:52:34.423 回答