Tag: 设计

在超时注销之前向用户显示消息

我们有一个使用Devise进行身份validation的Rails 4应用程序。 我们想: 在用户自动过期前1分钟向用户发送消息 让用户单击此消息上的按钮以继续他/她的会话 自动将用户发送到登录页面,并在他/她的会话到期时在那里显示消息 是否有任何Devise扩展或内置组件可以帮助我们实现这一目标,还是我们需要推出自己的解决方案? 如果我们自己开始,有没有任何好的教程来完成这个或关于我们可能会与之交互的Devise钩子的文档?

设计:未定义的方法`user_signed_in?’ for ApplicationController:Class

我在使用Rails 3.1.1和Ruby 1.9.2时遇到了上述错误。 我花了最后一小时看,我找到的主要内容是: ApplicationController中的clear_helpers可能导致帮助程序无法加载。 我的代码没有使用它,我不相信我安装的gem也是。 缺少devise_for中的devise_for。 我有devise_for :users 在我的Users模型中缺少’database_authenticatable’。 我有我的users.rb: 设计:database_authenticatable,:registerable,:recoverable,:rememberable,:trackable,:validatable 我的行为完全匹配除了signed_in? :user之外的电子邮件线程中描述的signed_in? :user signed_in? :user也不适合我。 但是, Devise.mappings确实显示了用户映射。 关于什么可能出错的任何想法? 即使是对current_user的破解也会对我有所帮助,因为我必须尽快运行一些function。

user_signed_in? 总是返回false

我一直关注这些轨道广播 http://railscasts.com/episodes/209-introducing-devise&& http://railscasts.com/episodes/233-engage-with-devise用于用户身份validation,但每当我尝试查看用户是否已登录时,反应总是错误的。 我尝试了很多东西来尝试修复这个问题。 我尝试了不同版本的devise和devise_rpx_connectable。 我尝试在配置文件中更改设置。 我尝试使用不同的gem版本运行’rails generate devise:install’。 奇怪的是,当我将RPXNow.api_key更改为虚假的东西时,我没有收到错误,这是意外的行为。 这是我的application.html.erb文件中的代码: Signed in as . Not you? 这是我的用户模型user.rb文件中的代码 class User true …..other stuff…. end 这是我的Gemfile的一部分: gem ‘rails’, ‘3.2.6’ gem ‘devise’,’2.0.0′ gem ‘devise_rpx_connectable’ 这将获得devise_rpx_connectable gem版本0.2.2 这是我的initializers / devise.rb文件中的最新内容: Devise.setup do |config| config.mailer_sender = “please-change-me-at-config-initializers-devise@example.com” config.apply_schema = false require ‘devise/orm/active_record’ config.case_insensitive_keys = [ :email ] config.strip_whitespace_keys = […]

设计现有数据库:401使用有效密码未授权

我正在尝试使用设计用于我的网站的用户身份validation。 它使用现有的User表。 该表具有用户名和密码,但是当我尝试登录时,出现以下错误: 在90ms内完成401 Unauthorized。 日志: Started POST “/users/sign_in” for 127.0.0.1 at 2013-06-06 15:50:01 +0530 Processing by Devise::SessionsController#create as HTML Parameters: {“utf8″=>”✓”, “authenticity_token”=>”+uKE28LrkWW71EHeasDSDCENQogAGODfBc3ZJJLyi9U=”, “user”=>{“email”=>”admin@abc.com”, “password”=>”[FILTERED]”, “remember_me”=>”0”}, “commit”=>”Sign in”} User Load (0.1ms) SELECT `users`.* FROM `users` WHERE `users`.`email` = ‘admin@abc.com’ LIMIT 1 Completed 401 Unauthorized in 90ms Processing by Devise::SessionsController#new as HTML Parameters: {“utf8″=>”✓”, “authenticity_token”=>”+uKE28LrkWW71EHeasDSDCENQogAGODfBc3ZJJLyi9U=”, “user”=>{“email”=>”admin@abc.com”, […]

设计劫持401响应

我正在尝试创建一个API,对于我的一个操作,我将其限制为仅限管理员。 为此,我使用的before_filter如下: def authorize_admin! if !@current_user.admin? error = { :error => “You must be an admin to do that.” } render params[:format].to_sym => error, :status => 401 end end 问题是当我们发回401响应时,错误转换为: “{\”error\”:\”You need to sign in or sign up before continuing.\”}” 这是Devise在发送401响应时发回的响应。 有没有办法可以关闭这个function?

设计rails current_user vs user_signed_in?

我正在使用Devise on Rails 4.1我的问题是关于帮助者以及它们与会话的关系。 current_user:告诉您是否有可供该用户使用的用户会话。 user_signed_in:告诉您用户是否经过身份validation。 如果user_signed_in,我无法理解如何有一个current_user? 是假的? 这两种方法有什么区别,它与会话有什么关系。 谢谢。 理查德麦德森

Rails&Devise:两步确认路由错误

我正在尝试使用Devise进行像heroku这样的两步确认。 我的路线: devise_for :user, :controllers => {:confirmations => “confirmations”, :registrations => “registrations” } put “confirm_account”, :to => “confirmations#confirm_account” 这是我的备用确认控制器: class ConfirmationsController “show” end end end 这是我的show.html.erb : resource_name, :url => confirm_account_path(resource_name)) do |f| %> ‘devise/shared/links’ %> 填写密码后单击确认(在确认电子邮件中单击confirm后)。 我被路由到/confirm_account.user这很奇怪,对吧? 是什么导致了这个问题? 编辑 rake routes返回: new_user_session GET /user/sign_in(.:format) {:action=>”new”, :controller=>”devise/sessions”} user_session POST /user/sign_in(.:format) {:action=>”create”, :controller=>”devise/sessions”} destroy_user_session GET /user/sign_out(.:format) […]

什么是设计authenticate_user的代码! 生成后:用户

我意识到authenticate_user! 没有在gem文件中明确定义 ,但我想知道典型的应用程序(名为User模型上的身份validation),该方法是什么样的。 我需要知道,以便我可以稍微修改它。

设计:将未经证实的电子邮件地址传回登录页面

当用户在我的Rails应用程序中注册帐户时,我使用默认的Devise行为向他们发送确认电子邮件。 在网站上,用户填写注册表后,他们会自动重定向到登录页面,并提醒他们需要通过电子邮件确认他们的帐户: “请通过电子邮件确认您的帐户。” 我希望警报更具体,比如说 “确认电子邮件已发送至。请单击电子邮件中的链接以完成注册过程!” 如何将未经证实的电子邮件地址传回视图?

避免在root_path中设计validationflash消息

国际化-Flash的消息与-设计和自举 的routes.rb root :to => ‘users#index’ devise_for :users, :controllers => {:registrations => “registrations”, :sessions => “sessions”} devise_for :users do get ‘/users/sign_in’, :to => ‘devise/sessions#new’, :as => :new_user_session get ‘/users/sign_out’, :to => ‘devise/sessions#destroy’, :as => :destroy_user_session get “/users/sign_up”, :to => “registrations#new” end 当我尝试访问localhost:3000 ,我将指向localhost:3000/users/sign_in ,这是正常的,因为filter ,但是我会收到validation消息 您需要先登录或注册才能继续 怎么避免这个? 我尝试通过在没有帮助的路线中使用match进行更改。 编辑:考虑一个场景:(没有用户会话)如果我尝试访问/角色将被重定向到登录路径,那时我将需要msg。 或者我会放弃其他闪存validation,例如注销,电子邮件存在,错误。