2016-04-06 3 views
-2

私はレールアプリケーションがあり、簡単なログインスクリプトを書いています。Railsユーザのログイン、ページへのGarantアクセスのみ

ログインは、入力されたパスワードがデータベースのハッシュされたパスワードと同じかどうかをチェックします。

次に、ユーザーIDをセッションに保存します。

は今、私はページが唯一vissibleあるかだけユーザーがlogedされた場合にアクセスすることができ..私はこれを達成することができますどのように

ことをしたいですか? Deviseのような宝石は、ほんの数分で私のためにそれを行うことができたときに、すべての助け

+0

それが否決されたのはなぜ? – Felix

答えて

5

まずため

おかげで、私はこれを自分でしないだろう。

本当にこの自分を行うにはしたくない場合は、私はすべてのアクションの前に呼び出されますあなたのApplicationControlleruser_logged_in!方法を行うだろう、が、(あなたがbefore_actionでチェックすべきアクションを選択することができます):

class ApplicationController < BaseController 
    before_action :user_logged_in! 

    protected 

    def user_logged_in! 
    # Logic that checks if the user is actually logged in (check in session, etc). 

    # If not logged in, redirect the user to the root page with a flash message. 
    end 
end 
ユーザーが認証される必要はありませんアクション/コントローラの場合

、あなたがskip_before_actionを使用することができます。

class DomainsController < BaseController 
    skip_before_action :user_logged_in!, only: [:index, :show] 
end 
+0

ええ、それは解決策ではありません。私がログインしていないときに私はdomain/users/editと呼ぶことができます... しかし、それはユーザがログインした後でのみ可能であるべきです。 – Felix

+1

絶対に。例えば、 'domains_controller'の中では、' skip_before_action'を使ってこの検証をスキップすることができます。私はそれをもっと明確にするために私の答えを編集します。 – born4new

+0

とデバイスのヒントありがとう。私は宝石を知っていた。しかし、私は最小限の機能しか必要としません。私はそれを "私の自己によって"したいです;) – Felix

関連する問題