标签: devise

没有设置Devise Secret Key

我正在使用Active Admin gem为管理后端开发Rails 4应用程序.Active Admin反过来使用Devise进行用户身份验证.现在,当我尝试capistrano在VPS服务器上部署应用程序时,我收到以下错误:

rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:
config.secret_key = '-- secret key --'
Run Code Online (Sandbox Code Playgroud)

Google搜索对此错误没有太大作用.有什么建议为什么它会抛出错误?我应该将密钥添加到devise初始化程序,因为我找不到任何设置此类配置密钥的地方initializers/devise.rb

ruby-on-rails devise

97
推荐指数
10
解决办法
9万
查看次数

如何在Devise中验证用户的密码

我在rails中使用devise gem匹配用户密码时遇到问题.存储在我的数据库上的用户密码是encrypted_pa​​ssword,我试图通过密码查找用户,但我不明白如何匹配表格中的密码和我的数据库中的encrypted_pa​​ssword.

User.find_by_email_and_password(params[:user][:email], params[:user][:password])
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise

94
推荐指数
3
解决办法
5万
查看次数

Rails 5,未定义方法`for'for#<Devise on line devise_parameter_sanitizer.for

我正在使用Rails 5

我在模型用户中添加了新的字段用户名.

class Users::RegistrationsController < Devise::RegistrationsController
  before_action :configure_permitted_parameters

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up).push(:username)  
  end
end
Run Code Online (Sandbox Code Playgroud)

在注册期间显示错误:未定义的方法`for'for#您的意思是?叉子

跟踪:

NoMethodError(未定义的方法`为'for#你的意思是?fork):

app/controllers/users/registrations_controller.rb:7:in `configure_permitted_parameters'
  Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout
  Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb
  Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (5.0ms)
  Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb
  Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (2.9ms)
  Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
  Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.2ms)
  Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (118.1ms)
Run Code Online (Sandbox Code Playgroud)

谁可以帮忙?怎么解决这个问题?

ruby-on-rails devise ruby-on-rails-5

92
推荐指数
2
解决办法
3万
查看次数

从Rails控制台设置密码重置

在运行应用程序时,如何通过电子邮件地址选择用户,然后在rails consoleDevise中手动设置密码?

另外,在使用Devise时,我将在哪里查看文档以涵盖有关操作帐户的更多详细信息?

ruby ruby-on-rails rails-console devise ruby-on-rails-3

85
推荐指数
4
解决办法
6万
查看次数

在Rails中的子域之间共享会话(cookie)?

我有一个应用程序设置,每个用户都属于一个公司,该公司有一个子域名(我使用的是basecamp样式的子域名).我面临的问题是rails正在创建多个cookie(一个用于lvh.me,另一个用于subdomain.lvh.me),这在我的应用程序中造成了相当多的中断(例如flash消息在所有请求中都是持久的签到).

我在/cofig/initilizers/session_store.rb文件中有这个:

AppName::Application.config.session_store :cookie_store, key: '_application_devise_session', domain: :all
Run Code Online (Sandbox Code Playgroud)

域名:所有似乎都是我在谷歌上找到的标准答案,但这似乎对我不起作用.任何帮助表示赞赏!

session ruby-on-rails devise

85
推荐指数
6
解决办法
4万
查看次数

设计中sign_in动作的不同布局

我正在尝试为sign_in操作使用名为"devise"的不同/自定义布局.我在设计维基中找到了这个页面,第二个例子甚至说你可以按行动(在这种情况下,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
Run Code Online (Sandbox Code Playgroud)

但它似乎没有工作,因为它仍然加载默认的应用程序布局.我将不胜感激任何帮助.

layout ruby-on-rails devise

81
推荐指数
6
解决办法
4万
查看次数

rails - 对于json设计请求,"警告:无法验证CSRF令牌真实性"

如何检索CSRF令牌以传递JSON请求?

我知道出于安全原因,Rails正在检查所有请求类型(包括JSON/XML)上的CSRF令牌.

我可以放入我的控制器skip_before_filter :verify_authenticity_token,但我会失去CRSF保护(不建议:-)).

这个类似的(仍未被接受的)答案暗示

检索令牌 <%= form_authenticity_token %>

问题是如何?我是否需要先对我的任何页面进行调用以检索令牌,然后使用Devise进行真正的身份验证?或者它是一个一次性的信息,我可以从我的服务器获得然后一致地使用(直到我在服务器本身手动更改它)?

csrf devise ruby-on-rails-3 ruby-on-rails-3.1

81
推荐指数
3
解决办法
8万
查看次数

设计valid_password的奇怪问题?

在过去的两个小时里,我一直在尝试调试设计中的一个奇怪的问题,这不是让我登录.

这也是我所指的东西:

password 
=> 'vinodsobale'

password == 'vinodsobale'
=> true

resource.valid_password?(password)

=> false

resource.valid_password?('vinodsobale')

=> true
Run Code Online (Sandbox Code Playgroud)

附上截图:

在此输入图像描述 注意:我在设计中启用了调试器,因此上面的代码是设计内部代码.

对我来说,它看起来像是一个问题Devise.secure_compare.

ruby-on-rails devise ruby-on-rails-3.2

78
推荐指数
1
解决办法
2896
查看次数

将Devise Login设置为根页面

我为我的路线使用以下代码:

devise_for :user, 
  :as => '', 
  :path_names => { 
    :sign_in => "", 
    :sign_out => "logout", 
    :sign_up => "register" 
  }
Run Code Online (Sandbox Code Playgroud)

但是当我退出并且我转到后,/logout我收到以下错误:

没有路由匹配{:action =>"new",:controller =>"devise/sessions"}

如何设置要:sign_in采取行动的根路径?

ruby-on-rails devise ruby-on-rails-3

76
推荐指数
5
解决办法
5万
查看次数

设计的token_authenticatable安全吗?

我正在使用Rails API构建一个简单的api ,并希望确保我在这里正确的轨道.我正在使用设计来处理登录,并决定使用Devise的token_authenticatable选项,它会生成一个API密钥,您需要随每个请求一起发送.

我将API与骨干/牵线木偶前端配对,我一般想知道如何处理会话.我的第一个想法是将api密钥存储在本地存储或cookie中,并在页面加载时检索它,但是从安全的角度来看存储api密钥的方式让我感到困扰.通过查看本地存储/ cookie或嗅探任何经过的请求来获取api密钥并不容易,并使用它来无限期地冒充该用户?我目前正在每次登录时重置api密钥,但即使这样也很频繁 - 任何时候你登录任何设备,这意味着你会被其他人登录,这是一种痛苦.如果我可以放弃这种重置,我觉得从可用性的角度来看它会有所改善.

我可能在这里完全错了(并且希望我是),任何人都可以解释这种方式的认证是否可靠安全,如果不是,那么一个好的替代方案是什么?总的来说,我正在寻找一种方法,我可以安全地保持用户'登录'到API访问,而不经常强制重新认证.

authentication api ruby-on-rails devise rails-api

76
推荐指数
2
解决办法
2万
查看次数