javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

ruby on rails - 设计的token_authenticatable安全吗?

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

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

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

trans by 2019-06-04T23:28:48Z

ruby on rails - 设计和多个“用户”模型

我正在使用rails 3.2和设计2.0,我对Rails很新。

要求

我想实现以下目标:

  • 具有2个或更多“用户”模型,例如。 会员,客户,管理员
  • 所有型号共享一些必填字段(例如电子邮件和密码)
  • 每个模型可能有一些独特的领域(例如,仅限客户的公司)
  • 某些字段可能是共享的但没有相同的验证(例如,客户需要名称,但会员可选)
  • 注册过程中必须填写所有字段,因此表单不同
  • 登录表单应该是唯一的

可能的解决方案

我用Google搜索并搜索了StackOverflow很长一段时间,但对我来说似乎没什么问题(我是一个Java人,对不起:)现在我很困惑。 出现了两个解决方案:

单一设计用户

这是最常见的答案。 只需创建默认设备用户并在会员 - >用户和客户 - >用户之间创建关系。我关注的是如何为每个模型实现自定义注册流程? 我尝试了不同的东西,但一切都结束了!

多个设计用户

这解决了自定义注册过程,对我来说似乎是正确的,但唯一的登录表单是一个阻止程序。 我在SO(Devise - 从两个模型登录)上找到了答案,建议覆盖Devise :: Models :: Authenticatable.find_for_authentication(条件)。这似乎很复杂(?),因为我是铁杆新手,我想知道这是否有效?

谢谢你的建议!

trans by 2019-05-29T09:57:22Z

ruby on rails 3 - 如何删除设计路线?

我在Rails 3应用程序中使用Devise,但在这种情况下,用户必须由现有用户创建,该用户确定他/她将拥有哪些权限。

因此,我想要:

  • 删除用户注册的路由。
  • 仍允许用户在注册后编辑其个人资料(更改电子邮件地址和密码)

我怎样才能做到这一点?

目前,我通过在devise/registrations之前放置以下内容来有效地删除此路由:

match 'users/sign_up' => redirect('/404.html')

这有效,但我想有更好的方法,对吧?

更新

正如Benoit Garret所说,在我的情况下,最好的解决方案是跳过创建注册路线,并创建我真正想要的那些。

为此,我首先运行devise/registrations,然后使用输出重新创建我想要的。 最终结果如下:

devise_for :users, :skip => [:registrations] 
as :user do
  get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
  put 'users' => 'devise/registrations#update', :as => 'user_registration'
end

注意:

  • 我的User模型中仍然有devise/registrations
  • devise/registrations处理更新电子邮件和密码
  • 更新其他用户属性 - 权限等 - 由不同的控制器处理

实际答案:

删除默认Devise路径的路由;即:

devise_for :users, path_names: {
  sign_up: ''
}
trans by 2019-05-16T06:18:37Z

ruby - 从Rails cons重置密码

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

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

trans by 2019-04-21T11:39:09Z

ruby on rails - Heroku / devise - 缺少主机链接到! 请提供:host参数或设置default_url_options [:host]

我想在heroku上推送我的应用程序。 我还在开发中。我使用了可确认模块的设计。

当我尝试使用heroku控制台添加用户时出现此错误:

Missing host to link to! Please provide :host parameter or set default_url_options[:host]

在测试和开发环境中,我有以下行:

environment / development.rb和environments / test.rb

config.action_mailer.default_url_options = { :host => 'localhost:3000' }

我没有在生产环境中设置一些东西。

我试过推

config.action_mailer.default_url_options = { :host => 'mywebsitename.com' }
config.action_mailer.default_url_options = { :host => 'heroku.mywebsitename.com' }

但它也不起作用..

我在网上看到它可能与ActionMailer有关,但我不知道我要配置什么。非常感谢你的想法!

编辑:

嗨,

为了在我推动heroku时不让我的应用程序崩溃,我把它放在我的env / test.rb和我的env / dev.rb(不在env.rb中,我认为这是因为它是rails 3应用程序)

config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }

但是当我尝试在heroku控制台中创建用户时:

User.create(:username => "test", :email => "test@test.com", :password => "test1234", :password_confirmation => "test1234", :confirmed_at => "2010-11-03 14:11:15.520128")

这是我得到的错误:

ActionView::Template::Error: Missing host to link to! Please provide :host parameter or set default_url_options[:host]
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_dispatch/routing/route_set.rb:473:in `url_for'
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_dispatch/routing/url_for.rb:132:in `url_for'
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_view/helpers/url_helper.rb:99:in `url_for'
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_dispatch/routing/route_set.rb:195:in `user_confirmation_url'

编辑(2)

当我在控制台上键入heroku日志时,我得到了这个==> production.log< ==所以我想当一个人在heroku上部署它已经在生产中了。

我像这样配置env / prod.rb:

config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }

现在,当我尝试创建用户时,我将此作为错误:

Errno::EAFNOSUPPORT: Address family not supported by protocol - socket(2)
/usr/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:551:in `initialize'
/usr/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:551:in `open'
/usr/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:551:in `do_start'
/usr/ruby1.8.7/lib/ruby/1.8/timeout.rb:62:in `timeout'
trans by 2019-04-09T03:41:11Z

ruby on rails - 使用devise valid_password的奇怪问题?

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

这也是我所指的东西:

password 
=> 'vinodsobale'

password == 'vinodsobale'
=> true

resource.valid_password?(password)

=> false

resource.valid_password?('vinodsobale')

=> true

附上截图:

enter image description here注意:我在设计中启用了调试器,因此上面的代码是设计内部代码。

对我来说,这似乎是Devise.secure_compare中的一个问题。

trans by 2019-04-05T07:53:10Z

ruby on rails - 覆盖设计注册con

我在注册表单中添加了一个基于不同模型的字段,请参阅如何将嵌套属性与设计模型一起用于血淋淋的细节。 这部分工作正常。

现在的问题是当我保存时,它在注册控制器的创建操作中失败,该控制器由该字段(公司)上的Activerecord::UnknownAttributeError设计。

我假设我需要覆盖注册控制器,还是有更好/更简单的方法我应该接近这个?

trans by 2019-03-09T22:32:25Z

没有路由匹配“/ users / sign_out”设计rails 3

我在我的应用程序上安装了devise并在我的routes.rb文件中应用了以下内容:

<div id="user_nav">
    <% if user_signed_in? %>
        Signed in as <%= current_user.email %>. This cannot be cheese?
        <%= link_to 'Sign out', destroy_user_session_path %>
    <% else %>
        <%= link_to 'Register', new_user_registration_path %> or <%= link_to 'Sign in', new_user_session_path %>
    <% end %>
</div>

我跑了routes.rb并确认所有路线都有效。

此外,在我的routes.rb文件中,我有devise_for :usersroot :to => "home#index"

单击“注销”链接时出现以下路由错误:

No route matches "/users/sign_out"

是什么导致错误?

trans by 2019-01-03T20:46:23Z

上一页 1 2 3 共3页