0

deviseを使用してユーザー認証を開発しています。サインインページは、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

sthがあることがわかりました。私のjqueryモバイルインクルージョンと関係があります。このリンクは私の質問を解決しました:

jquery mobileを使用するrubyrails、URLを変更しないリダイレクト

于 2012-12-10T06:52:34.423 に答える