Я пытаюсь использовать вспомогательный метод контроллера Devise signed_in? чтобы проверить, уже ли пользователь signed_in, если да, то я хочу перенаправить на определенную страницу.Придумайте, как добавить подписанный флажок в пользовательский контроллер сеанса?
Я пробовал это, но signed_in? метод всегда возвращает true, как я могу это сделать?
class SessionsController < Devise::SessionsController
def new
redirect_to root_url
end
def create
if signed_in?(resource_name)
redirect_to where_-_want_to_url
else
resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure")
return sign_in_and_redirect(resource_name, resource)
end
end
def sign_in_and_redirect(resource_or_scope, resource=nil)
scope = Devise::Mapping.find_scope!(resource_or_scope)
resource ||= resource_or_scope
sign_in(scope, resource) unless warden.user(scope) == resource
return render :json => {:success => true, :redirect => stored_location_for(scope) || after_sign_in_path_for(resource)}
end
def failure
return render :json => { :success => false }
end
end
Для чего вы хотите это использовать? Вы просто хотите отобразить другую ** домашнюю страницу ** в зависимости от того, вошел ли пользователь в систему или нет? – Ashitaka
Нет, есть ситуация, когда страница входа в систему проигнорирована, но на самом деле пользователь уже вошел в систему. Поэтому я хочу сделать перенаправление костюма – Rn2dy