我知道您可以覆盖默认的设计控制器,我这样做是为了注册和会话控制器。我知道您也可以在区域设置下更改设计中的Flash消息文本。但是,当用户名和密码组合无效时,我不确定如何更改会话控制器显示的Flash消息类型。
create方法看起来像
def create
self.resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_in_path_for(resource)
end
我怀疑验证是在跟随电话
期间完成的warden.authenticate!(auth_options)
但这是我不确定如何在我的应用中覆盖它的地方。
此外,我认为这是一个复杂的覆盖,用于更改闪光通知颜色的简单用例。
任何见解都会非常感激。
谢谢! 尼克
答案 0 :(得分:7)
您可以使用自定义失败应用来执行此操作。如您所见,此Flash消息设置正确here因此您可以在自定义故障应用中更改它。
首先,你从Devise的那个继承你的失败应用程序:
class CustomFailure < Devise::FailureApp
def recall
env["PATH_INFO"] = attempted_path
flash.now[:error] = i18n_message(:invalid)
self.response = recall_app(warden_options[:recall]).call(env)
end
end
将此文件放在应用中的某个位置,然后说Devise像这样使用它(config/initializers/devise.rb
):
config.warden do |manager|
manager.failure_app = CustomFailure
end