0

「サインイン」機能があります-:controller => "sessions"、:action => "new"

また、:controller => "application"を編集したので、Webサイトのどこかにいて、ログインしていない場合は、ルートパスにリダイレクトされます。

before_filter :login_required
protected
  def login_required
    redirect_to "/" if not session[:user]
end

しかし、問題は、サインインページにアクセスできないことです。

以前はlocalhost:3000 / sessions/newでした

ルートパスを変更すると役立つと思ったので、これをroutes.rbに追加しました。

match '/', :controller => 'sessions', :action => 'new'

その後、localhost:3000はブラウザで「間違った転送」というエラーを出し始めました。

また、デフォルトの場所として「/ sessions /new/」を使用したくありません。

「/」に移動すると、「/ sessions / new /」の内容を確認し、保護コードをアプリケーションコントローラーに保持する方法はありますか?

4

2 に答える 2

1

使用できます

skip_filter :login_required, :only => [:new]

:new アクションのフィルターをスキップするには、SessionController で。また、次のように記述して「/」に一致させることもできます。

 root :to => 'sessions#new'
于 2012-11-25T19:15:43.187 に答える
1

上記のskip_filterメソッドを使用する以外に、特に正当な理由がない限り、独自のgemを作成するのではなく、ユーザー認証にDevise gemを使用することを検討してください。

于 2012-11-25T21:59:42.987 に答える