2016-04-14 5 views
0

私はusers_controller.rbです。 loginregisterforgot_passwordlogoutなどのメソッドが多すぎます。これらのアクションを私のRubyコントローラで許可するようにしたいと思います。AuthをCakePHPのようにルビーに許可する方法は?

私は$this->Auth->allowをCakePHPで行っています。

$this->Auth->allow('register', 'login', 'forgot_password', 'logout'); 

しかし、これは非常に難しいです。私に提案してください -

def login 
    @title = 'Login' 
    #render layout: 'login' 
end 
def dashboard 
    if logged_in? 
     @title = 'My Dashboard' 
     @user = User.get_profile(session[:user_id]) 
     @user = User.get_profile(session[:user_id]) 
     #raise @myProfile.inspect 
    else 
     redirect_to '/login' 
    end 
end 
def my_profile 
    if logged_in? 
    @title = 'My Profile' 
    @user = User.get_profile(session[:user_id]) 
    else 
    redirect_to '/login' 
    end 
end 

def logout 
    log_out 
    redirect_to '/login' 
end 

毎回私はすべての行動にif logged_in? ... else ... endを追加しています。だから 私はAuth AllowをCakePHPコードのようにルビーに入れたい。私を助けてください。

答えて

1

宝石を使用するのではなく、独自の認証システムを作成したようですので、ログインしたユーザーを確認する方法を追加することができます。 RESTfulなリソースの使用に関する以前の答えを - application_controller.rb

def authenticate_user 
    redirect_to login_path unless logged_in? 
end 

は、その後、あなたがあなたの中に署名するために、ユーザが必要とするすべてのコントローラに言われていること

class YourController < ApplicationContoller 
    before_action :authetnicate_user, except: [:actions_that_doesnt_need_auth] 

    ... 
    # All normal methods 
end 

を行うことができます理解し、心に留めておくことが重要です。ご質問がある場合は、お問い合わせください。

+0

私はあなたの答えに従っています。ここでは、#のための 'undefined method' authetnicate_user 'というエラーメッセージが表示されます。 – Chinmay235

+0

少しのコーディングエラーです。ところであなたのコードは書いてあります。アプリケーションコントローラに 'authenticate_user'の代わりに' self.authenticate_user'を追加する必要があります。ありがとうございました :) – Chinmay235

2

これらの操作は別々のコントローラで行う必要があります。plentyresourcesであり、これを説明するには「RESTful Rails」を検索してください。

別々のコントローラにいったん設定すると、「before」アクションを使用して、権限のないユーザーがこれらの操作にアクセスするのを防ぐことができます。

+0

お返事ありがとうございます。 :) – Chinmay235

+0

もう一つの問題があります。ログイン後、 'http:// localhost:3000/login'ページが開きます。 – Chinmay235

関連する問題