레일 3 용 Devise를 사용하고 있습니다. 페이지 캐싱을 위해 로그인/아웃 정보를위한 쿠키를 설정해야합니다.Devise로 로그인/로그 아웃 할 때 쿠키를 설정하는 방법
Devise를 사용하여 로그인/로그 아웃 할 때 쿠키를 설정하는 가장 간단한 방법은 무엇입니까? 나는 '컨트롤러를 사용자 정의하는 방법'을 읽었지만 많은 작업이 될 것으로 보인다.
레일 3 용 Devise를 사용하고 있습니다. 페이지 캐싱을 위해 로그인/아웃 정보를위한 쿠키를 설정해야합니다.Devise로 로그인/로그 아웃 할 때 쿠키를 설정하는 방법
Devise를 사용하여 로그인/로그 아웃 할 때 쿠키를 설정하는 가장 간단한 방법은 무엇입니까? 나는 '컨트롤러를 사용자 정의하는 방법'을 읽었지만 많은 작업이 될 것으로 보인다.
사실이 유사한 컨트롤러를 만들 수에 로그에 쿠키를 추가하고 로그 아웃 할 수있는 유증의 SessionsController을 확장 너무 어렵지 않을 것이다 :
다음# app/controllers/sessions_controller.rb
class SessionsController < Devise::SessionsController
# POST /resource/sign_in
def create
cookies[:sign_in] = "Sign in info you want to store"
super
end
# GET /resource/sign_out
def destroy
cookies[:sign_out] = "Sign out info you want to store"
super
end
end
당신이를 추가해야 당신의 노선을 따르십시오.
devise_for :users, :controllers => { :sessions => "sessions" }
그곳에 당신을 가장 많이 데려다 줄 것입니다. @에서 적응
Warden::Manager.after_set_user do |user,auth,opts|
auth.cookies[:signed_in] = 1
end
Warden::Manager.before_logout do |user,auth,opts|
auth.cookies.delete :signed_in
end
, 다른 솔루션은 devise.rb에 예를 들어 소장의 콜백을 사용하는 것입니다 당신 devise.rb 이니셜 라이저의 끝. 아니 그것이 내가 세션/new.html.haml을 복사 한 쿠키
Warden::Manager.after_authentication do |user, auth, opts|
if user.remember_me
auth.cookies[:email] = {value: user.email, expires: 2.weeks.from_now}
else
auth.cookies.delete :email
end
end
signed_in 컨트롤에 쿠키를 설정하는 좋은 방법. 나는 Accepted answer에 언급 된대로 SessionsController를 시도했지만, 역시 효과가 있었다. 그러나 사용자가 '비밀번호 분실'방법으로 비밀번호를 재설정 한 직후 쿠키를 설정하지 않았다. Warden 콜백을 사용하여 예상대로 작동했습니다! –
이것은 훨씬 더 효과적입니다. 옴니버스를 통해 로그인하거나 사용자가 비밀번호를 업데이트하고 다시 로그인해야하는 경우와 같은 상황을 처리합니다. – ScotterC
@karlrosaen ~'auth.cookies'는 더 이상 지원되지 않습니다 – Roland
칼 - rosaen 새로운 이니셜을 만드는이 솔루션을 받거나 추가 : 고안이 소장 기반으로하므로
는
삭제됩니다 경우
이
는 나에게 설정 옵션을 기억한다면 이메일을 기억하기 위해 쿠키를 추가합니다. 그것은 작동합니다! 감사. –http://stackoverflow.com/questions/4301249/how-to-change-the-default-path-of-view-files-in-a-rails-3-controller의 솔루션을 사용하여 원본을 사용할 수 있습니다 조회수. –
쿠키가 iframe에 설정되어 있지 않습니다. 로그인하면'Ecwid' 임베디드 애플리케이션의 로그인 페이지에서 나를 리다이렉트합니다. – kpp