Tag: devise

新安装的Rails + Devise总是获得401 Unauthorized

我有一个新的Rails安装,我正在尝试使用Devise设置身份validation。 据我所知,我有一个非常基本的设置应该可以工作,但每当我尝试使用默认的Devise登录表单登录时,我都会收到一个未经授权的错误。 我确信我的凭据是正确的,因为我创建了一个用户在控制台中进行测试,如下所示: User.new({:email=>’mark@markdavies.com.au’, :priv_level => ‘admin’, :password=>’mypassword’, :password_confirmation=>’mypassword’}).save 我的用户型号: class User < ActiveRecord::Base # Include default devise modules. Others available are: # :token_authenticatable, :confirmable, # :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable, :confirmable # Setup accessible (or protected) attributes for your model attr_accessible :email, :password, :password_confirmation, :remember_me, :priv_level, :unconfirmed_email # attr_accessible […]

在Rails 3中自定义Devise错误消息?

我正在使用设计来处理身份validation。 总的来说我喜欢它,但我想自定义错误显示。 现在我的观点中有以下内容。 <div class="field error”> “text” %> 但是当电子邮件出现问题时,显示的消息如下: is invalid 。 这不是非常用户友好,但我无法找到此消息的设置位置。 它似乎不是在devise.en.yml,但也许我忽略了一些东西。 知道我可以在哪里定制错误消息吗? 谢谢!

Rails设计:user_signed_in? 不工作

在我看来,我有这个: 但是当以用户身份登录时:我仍然可以看到链接: 帮助器为什么不工作?

猴子修补Devise(或任何Rails gem)

我在我的Rails项目中使用Devise身份validationgem,我想更改它在闪存警报中使用的密钥。 (设计使用:通知和:警告闪存键,但我想将它们更改为:成功和:错误,以便我可以使用Bootstrap显示漂亮的绿色/红色框。) 所以我希望能够以某种方式覆盖set_flash_message中的set_flash_message方法。 这是新方法: def set_flash_message(key, kind, options = {}) if key == ‘alert’ key = ‘error’ elsif key == ‘notice’ key = ‘success’ end message = find_message(kind, options) flash[key] = message if message.present? end 但我只是不知道该把它放在哪里。 更新: 基于答案,我使用以下代码创建了config / initializers / overrides.rb文件: class DeviseController def set_flash_message(key, kind, options = {}) if key == ‘alert’ key […]

仅在root_path上登录后才重定向用户

我的Rails应用程序上有一个root_path ,它不受用户保护,即它是一个简单的门户网站主页,带有登录表单。 用户登录后,我希望它转到dashboard_path 。 我做到了这个: def signed_in_root_path(scope_or_resource) dashboard_path end 这显然应该在用户登录时使用,并且我不希望它转到root_path ,同时仍然保持用户返回到前一页,如果它尝试到达受限区域并且它要么超时还是没有超时登录。 即: restricted_pa​​ge – > login – > restricted_pa​​ge_but_logged_in 我不想改变这种行为,这就是为什么我没有使用after_sign_in_path ,但是如果它在root_path ,或者想要在不需要用户身份validation的任何路由上重定向它。 我的问题是这不起作用。 登录后,我将被重定向回root_path ,我认为这是因为之前触发了after_sign_in_path 。 有没有办法做到这一点? 谢谢! 编辑:这是我第二次登录时工作,即我转到root_path ,登录,获取闪存消息,说明我已登录,并在root_path上的表单上再次输入用户名和密码。 我成功地被重定向到dashboard_path 。 不过,不是我想要的行为。

停止设置清除会话

当用户通过标准Devise控制器注销时,Devise会破坏整个会话存储,而不仅仅是它自己的数据。 有什么方法可以避免这种行为吗? 我还有其他不相关的数据应该保留。 session[:my_var] = “123” 通过设计退出… puts session[:my_var] # => nil

自动加载常量用户时检测到循环依赖性

我已经按照本教程( http://railscasts.com/episodes/236-omniauth-part-2 )使用OmniAuth和Devise创建facebook登录,我收到此错误:在我的路由中自动加载常量用户时检测到循环依赖性。 RB devise_for :users , :controllers => {:registrations => ‘registrations’} registrations_controller.rb Class RegistrationsController < Devise::RegistrationsController def create super session[:omniauth] = nil unless @user.new_record? end private def build_resource(*args) super if session["devise.omniauth"] @user.apply_omniauth(session["devise.omniauth"]) session["devise.omniauth"] = nil end end end 这是来自AuthenticationsController的我的创建方法 def create omniauth = request.env[“omniauth.auth”] authentication = Authentication.find_by_provider_and_uid(omniauth[‘provider’], omniauth[‘uid’]) if authentication flash[:notice] = “Signed in […]

使用可确认设计 – 当用户尝试使用未经证实的电子邮件登录时,将用户重定向到自定义页面

启用可确认模块后,Devise将不允许未经确认的用户在预定义的时间段过后登录。 而是将用户重定向回登录页面,并显示“您必须先确认帐户才能继续”。 这是一种不受欢迎的交互模型,因为闪存通知没有提供足够的空间来向用户正确解释访问被拒绝的原因,“确认您的帐户”的含义,提供重新发送确认的链接以及如何检查的说明您的垃圾邮件文件夹等。 有没有办法可以更改此行为以重定向到特定的URL?

设计 – 如何更改设置,以便电子邮件地址不需要是唯一的

我设置Devise使用用户名而不是电子邮件地址登录,因为我们的大量用户与他们的配偶共享同一个电子邮件地址。 这是我们服务的独特市场。 但每个配偶需要单独的账户来记录个性工具的结果。 数据库不再需要唯一的电子邮件地址,因此它将接受两个帐户的相同电子邮件地址。 但是,Devise仍然需要为每个帐户提供唯一的电子邮件地址。 是否有可以用来改变这个的设置或解决方法?