2013-07-24 2 views
0

/'나는'인증/페이스 북 'HAML/Rails에서 페이지를 리디렉션 할 수 있습니까?

index.html.haml

- if current_user 
    = link_to "Sign out", signout_path, id: "sign_out" 
    - else 
    = link_to "Sign in with Facebook", "/auth/facebook", id: "sign_in" 

에서 페이스 북에 로그인하는 페이지에 링크를 생성이 코드를 가지고 그러나 CURRENT_USER가 리디렉션 할 경우 내가 원하는 경우 대시 보드 '로 로그인하면 누군가가 로그인 페이지에서 자동으로 리디렉션됩니다.

세션 제어하여 SessionsController에서

class SessionsController < ApplicationController 
    def create 
    user = User.from_omniauth(env["omniauth.auth"]) 
    session[:user_id] = user.id 
    redirect_to dashboard_url 
    end 

    def destroy 
    session[:user_id] = nil 
    redirect_to login_url 
    end 
end 
+0

리디렉션이 있어야한다 컨트롤러에서 수행됩니다. 당신은 사용자의 로그인을 처리하는'SessionController'를 가지고 있습니까? –

+0

예, 방금 문제를 추가했습니다./login에 액세스 할 때 자동으로 어떻게합니까? –

답변

1

는 단순히 세션에 대해 확인하고 이미 로그 아웃을 시도하는 경우를 제외하고, 존재하는 경우 리디렉션 :

before_filter :except => [:destroy] {|c| c.redirect_to dashboard_path if c.current_user } 
+0

로그인 할 때 내 문제가 발생하지는 않지만 사용자가 domain.com/login을 수동으로 탐색하는 경우이를 수행하려고합니다. 그래서 그들이 그렇게하고 그들이 로그인하는 경우, 나는 자동으로 그들을 리디렉션하고 싶습니다. 대시 보드 –

+0

'/ login'의 대시 보드는'SessionsController # new'에 해당해야합니다.이 필터는이 필터에서 다룰 수 있습니다. 해당 액세스 제어 필터 ('before_filter : require_user' 또는 이것 저것과 같은 것)는 인증되지 않은 리디렉션을 처리해야합니다. –

관련 문제