Разработайте redirect_url для каждого контроллера - PullRequest
0 голосов
/ 03 мая 2011

Я хотел бы изменить redirect_url, который Devise использует для каждого контроллера, то есть:

class DashboardController < ApplicationController
  before_filter :authenticate_user!
end

class Admin::BaseController < ApplicationController
  before_filter :authenticate_user!, :failure_url => admin_login_path
end

Я не хочу менять способ авторизации администраторов.Я не хочу создавать модель администратора (devise_for: admin) или приложение для отказа клиента.Я хочу, чтобы те же функции на контроллерах, за исключением redirect_url после сбоя аутентификации.

Весь вклад будет оценен.

Ответы [ 2 ]

1 голос
/ 04 мая 2011

Я не проверял его, но, похоже, если вы обезьяны исправите защищенный метод с именем redirect_url в class Devise::FailureApp и заставите его возвращать URL-адрес, основываясь на некоторой логике, то вы можете перенаправить на другие URL-адреса. Проблема в том, что FailureApp полностью отделен от вашего контроллера, поэтому вам придется использовать что-то для передачи этой информации, например, singleton with controllers-> fail_urls map.

0 голосов
/ 04 мая 2011

Рассматривали ли вы использование CanCan для достижения

rescue_from CanCan::AccessDenied do |exception|
  flash[:error] = exception.message
  redirect_to root_url
end

Вот полный пример . Это также подробно описано в CanCan Wiki . Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...