Questions tagged «devise»

Devise是Ruby-on-Rails的身份验证宝。它取代了以前的解决方案,例如Restful Authentication或Authlogic。

8
设计中sign_in操作的不同布局
我正在尝试对sign_in操作使用名为“ devise”的其他/自定义布局。我在devise Wiki中找到了此页面,第二个示例甚至说您可以按操作进行操作(在本例中为sign_in操作),但是没有显示执行此操作的示例。IRC上的某人告诉我可以尝试以下操作: class ApplicationController < ActionController::Base protect_from_forgery layout :layout_by_resource def layout_by_resource if devise_controller? && resource_name == :user && action_name == 'sign_in' "devise" else "application" end end end 但它似乎仍无法正常工作,因为它仍在加载默认的应用程序布局。我将不胜感激任何帮助。

10
rails-“警告:无法验证CSRF令牌的真实性”用于json devise请求
如何检索CSRF令牌以通过JSON请求传递? 我知道出于安全原因,Rails正在检查所有请求类型(包括JSON / XML)上的CSRF令牌。 我可以放入控制器skip_before_filter :verify_authenticity_token,但是会失去CRSF保护(不建议:-))。 这个类似的(仍然不被接受)的答案表明 使用检索令牌 <%= form_authenticity_token %> 问题是如何?我是否需要先调用任何页面以检索令牌,然后使用Devise进行真正的身份验证?还是我可以从服务器上获得一次信息然后再使用它(直到我在服务器本身上手动更改它)?

8
将Devise登录设置为根页面
我的路线使用了以下代码: devise_for :user, :as => '', :path_names => { :sign_in => "", :sign_out => "logout", :sign_up => "register" } 但是,当我注销并转到时/logout,出现以下错误: 没有路由匹配{:action =>“ new”,:controller =>“设备/会话”} 如何设置要执行的根路径:sign_in?

3
devise的token_authenticatable安全吗?
我正在使用Rails API构建一个简单的api ,并希望确保我在这里正确。我正在使用devise来处理登录,并决定使用Devise的token_authenticatable选项,该选项会生成一个API密钥,您需要随每个请求发送该API密钥。 我将API与主干/牵线木偶的前端配对,并且通常想知道应该如何处理会话。我的第一个想法是只将api密钥存储在本地存储或cookie中,并在页面加载时检索它,但是从安全角度来看,关于存储api密钥的某些事情困扰着我。通过查找本地存储/ cookie或嗅探通过的任何请求,并无限期地模拟该用户来获取api密钥,并非容易吗?我目前正在每次登录时重置api密钥,但即使这样看起来也很频繁-每当您在任何设备上登录时,这意味着您将在其他设备上都注销,这很痛苦。如果我可以放弃此重置,我认为从可用性的角度来看它将有所改善。 我在这里可能是完全错误的(并希望我是),任何人都可以解释这种方式进行身份验证是否可靠吗?总体而言,我正在寻找一种方法,可以安全地使用户“登录”到API访问权限,而无需经常强制进行重新身份验证。

4
设计valid_password的怪异问题?
在过去的2个小时中,我一直在尝试调试一个怪异的问题,该问题不允许我登录。 这也是我指的东西: password => 'vinodsobale' password == 'vinodsobale' => true resource.valid_password?(password) => false resource.valid_password?('vinodsobale') => true 以及屏幕截图: 注意:我在devise中启用了调试器,因此上面的代码是devise内部代码。 对我来说,这似乎是一个问题Devise.secure_compare。

18
设计没有密码的更新用户
我想在设计时更新没有密码的用户属性。情况是这样的,如果密码和密码确认字段不为空,那么我需要设计错误,如果它们为空,则需要更新其他用户属性。我怎样才能通过设计做到这一点? 提前致谢!

8
在Rails中自定义Devise视图
我正在使用devise进行用户身份验证,但是我在注册,登录等页面上有不错的模型。我已经完成了rails generate devise:views User命令,并将所有视图都包含在views文件夹中,但是,当我用自己的new.html.erb替换registration / new.html.erb时,没有任何变化或看起来都没有变化。好像我做了什么。 任何人都知道我在做什么错,或者至少知道如何成功自定义设计视图 PS是否需要注意将我的devise / registration#new更改为/ signup的路径很重要?


4
设计和多个“用户”模型
我正在使用Rails 3.2和devise 2.0,而我对Rails还是很陌生。 要求 我想要实现以下目标: 具有2个或更多“用户”模型,例如。会员,客户,管理员 所有型号共享一些必填字段(例如,电子邮件和密码) 每个模型可能都有一些唯一的字段(例如,公司仅针对客户) 某些字段可能是共享的,但没有相同的验证(例如,“名称”对于“客户”是必需的,对于“成员”是可选的) 在注册过程中必须填写所有字段,因此表格是不同的 登录表单应该唯一 可能的解决方案 我搜索并搜索了StackOverflow很长时间了,但是对我来说似乎没有什么合适的(我是Java人士,很抱歉:),现在我很困惑。提出了两种解决方案: 单一设计用户 这是最常见的答案。只需创建默认的devise用户并在Member-> User和Customer-> User之间创建关系。我在这里关心的是如何为每种型号实现定制的注册过程?我尝试了不同的事情,但一切都糟透了! 多个设计用户 这解决了自定义注册过程,对我来说似乎是正确的,但是唯一的登录表单是阻止程序。我找到了关于SO的答案(Devise-从两个模型登录),该答案建议覆盖Devise :: Models :: Authenticatable.find_for_authentication(conditions)。这似乎很复杂(?),并且由于我是Rails的新手,所以我想知道是否可行? 谢谢你的建议!

3
这个Rails JSON身份验证API(使用Devise)是否安全?
我的Rails应用程序使用Devise进行身份验证。它有一个姐妹iOS应用程序,用户可以使用与该Web应用程序相同的凭据登录到iOS应用程序。所以我需要某种API进行身份验证。 这里有许多类似的问题指向本教程,但它似乎token_authenticatable已过时,因为此模块已从Devise中删除,并且某些行会引发错误。(我使用的是Devise 3.2.2。)我曾尝试根据该教程(和本教程)来推出自己的教程,但我对此并不百分百自信-我觉得可能有些东西被误解或错过。 首先,按照这个要点的建议,我authentication_token在users表中添加了text属性,以下内容添加到user.rb: before_save :ensure_authentication_token def ensure_authentication_token if authentication_token.blank? self.authentication_token = generate_authentication_token end end private def generate_authentication_token loop do token = Devise.friendly_token break token unless User.find_by(authentication_token: token) end end 然后,我有以下控制器: api_controller.rb class ApiController < ApplicationController respond_to :json skip_before_filter :authenticate_user! protected def user_params params[:user].permit(:email, :password, :password_confirmation) end end (请注意,我application_controller有一行before_filter :authenticate_user!。) …


4
仅针对生产环境禁用Devise注册
我正在与一组特定的用户一起启动Beta版网站。我只想在生产环境中禁用注册,并且只能禁用一小段时间(即,我不想完全取消注册)。我知道我可以简单地隐藏“注册”链接,但是我怀疑黑客比我仍然可以使用RESTful路由来完成注册更聪明。禁用注册的最佳方法是什么,这样我的测试/开发环境仍然可以工作,但是生产会受到影响?感谢您的指导。 我尝试以“ sign_up”转到“ sign_in”的方式指向命名作用域,但是没有用。这是我尝试过的: devise_scope :user do get "users/sign_in", :to => "devise/sessions#new", :as => :sign_in get "users/sign_up", :to => "devise/sessions#new", :as => :sign_up end 理想情况下,我们会将用户转到“ pages#registration_disabled”页面或类似的页面。我只是想得到一些可以玩的东西。 编辑:我已根据要求更改了模型,然后将以下内容添加到/spec/user_spec.rb describe "validations" do it "should fail registration if in production mode" do ENV['RAILS_ENV'] = "production" @user = Factory(:user).should_not be_valid end end 它传递的是“ true”而不是false。有没有办法模拟生产环境?我只是在吐口水。 …

6
“警告:无法批量分配受保护的属性”
我使用了RESTful技术来生成模型(实际上,我使用的是Devise gem,它为我完成了此工作),并且向模型添加了名为first_name和last_name的新字段。迁移进行得很好。我在模型中添加了attr_accessor:first_name,:last_name并期望它可以正常工作。但是,当我尝试使用Doctor.create({:first_name =>“ MyName”})等批量分配新实例时,出现错误,提示无法批量分配受保护的属性。 我认为使用attr_accessor的全部目的是避开模型字段的保护。您能帮助我理解此消息吗? 编辑:哦,顺便说一句,也不会创建记录。我认为应该这样做,因为这只是一个警告,但它们不在数据库中。 Edit2:这是我的模型 class Doctor < User has_many :patients has_many :prescriptions, :through=> :patients validates_presence_of :invitations, :on => :create, :message => "can't be blank" attr_accessor :invitations end 以及没有first_name和last_name的架构,因为它们是在users表中创建的,users表是医生的祖先。我使用了单表继承。 create_table :doctors do |t| t.integer :invitations t.timestamps end 这是更改用户表的迁移 add_column :users, :first_name, :string add_column :users, :last_name, :string add_column :users, …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.