标签: devise

CanCan能否使用Active Admin用户?

我正在使用Devise和CanCan对Rails 3应用程序的前端进行授权.我还有Active Admin作为后端的接口.我正在尝试为后端的管理员创建不同的角色.两端都有一个使用不同"用户"模型和表格的登录表单.问题是CanCan从前端获取当前用户(抓取当前用户对象)并使用它来查看后端中的某个人是否具有正确的权限.

那么,我怎样才能让CanCan正确抓住登录的管理员用户?

如果有人需要更多信息,我会很乐意提供.

authorization devise cancan ruby-on-rails-3

6
推荐指数
1
解决办法
6101
查看次数

使用设计认证的API访问 - 最佳实践?

我在Rails应用程序中使用Devise并希望通过API公开一些模型数据,但应该像应用程序一样限制对API的访问.

$ curl http://myapp.com/api/v1/sales/7.json
{"error":"You need to sign in or sign up before continuing."}
Run Code Online (Sandbox Code Playgroud)

明显.

在这种情况下访问API是否有最佳实践?我更愿意一步验证+获取数据,但这只是为了让客户的工作更轻松.他们将使用JQuery吸引数据客户端.

感谢您的任何信息!

  • 凡妮莎

ruby web-services ruby-on-rails devise

6
推荐指数
1
解决办法
1042
查看次数

如何使用设计配置超时?

模型:

devise :database_authenticatable, :registerable,:timeoutable, :recoverable, :rememberable, :trackable, :validatable,:timeout_in => 10.seconds
Run Code Online (Sandbox Code Playgroud)

development.rb:

config.timeout_in = 10.seconds
Run Code Online (Sandbox Code Playgroud)

devise.rb:

config.timeout_in = 10.seconds
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise

6
推荐指数
2
解决办法
7585
查看次数

使用Devise/Cancan/Rolify

我正在尝试建立授权/身份验证系统,我感到困惑,所以我有几个问题:

  1. 在很多教程中,人们建立了用户/角色HABTM关系.我知道这允许每个用户拥有多个角色,但如果你希望每个用户只有一个角色,这是必要的吗?如果我想为"活跃"和"非活动"用户提供选项,那些应该是角色还是其他什么?
  2. 在Cancan wiki中,它说如果你想让一个用户拥有一个角色,你应该只使它成为一个属性,然后使用"can:manage,:all if user.role =="admin"",但不是危险因为每次"admin"只是一个字符串?这有关系吗?有什么更好的方法来解决这个问题?

我已经尽力阅读所有涉及的文档,我从本教程开始

http://railsapps.github.com/tutorial-rails-bootstrap-devise-cancan.html

虽然我也阅读了 http://starqle.com/articles/rails-3-authentication-and-authorization-with-devise-and-cancan-part-1/和tonyamoyal.com/2010/09/29/rails -authentication与-色器件和-康康舞部分-2-宁静资源换管理员/

我真的不能按照我想要的方式工作.我该怎么做呢?

authentication authorization ruby-on-rails devise cancan

6
推荐指数
1
解决办法
4532
查看次数

更改Omniauth授权URL

我正在使用Omniauth和Devise使用google_oauth2策略.它运作良好,但现在我想用我选择的方式更改授权路径.

实际上,http://localhost:3000/users/auth/google_oauth2我想要更简单,http://localhost:3000/login因为它很容易记住.

它不会引起任何错误,因为我已禁用Devise数据库可验证(登录的唯一方法是通过谷歌帐户).

我能怎么做?

谢谢.

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

6
推荐指数
1
解决办法
2129
查看次数

保持设计中的查询字符串注册

我正在使用rails with devise进行注册.我还添加了一个邀请码,所以不是每个人都可以注册.

邀请代码通过查询字符串传输,如"/ users/sign_up?invite_code = wajdpapojapsd",并通过"f.hidden_​​field:invite_code,:value => params [:invite_code]添加到注册表单的隐藏字段中".

这非常有效.唯一的问题是,如果注册没有得到验证和拒绝,则设计重定向到"/ users"并丢失其中包含invite_code的查询字符串.

由于在尝试失败后电子邮件保留在注册表单中,我相信这也适用于邀请代码.作为最糟糕的解决方案重定向:在注册失败并丢失电子邮件后返回,但保留邀请代码,将比现在的工作方式更好.

编辑:到目前为止我已经为设计设置了一个注册控制器,但是不知道如何获得所需的行为.

有关如何保留查询字符串或仅提供邀请代码的任何帮助都很棒.

ruby ruby-on-rails devise query-string

6
推荐指数
1
解决办法
1758
查看次数

设计忽略我的自定义策略

我想创建一个用于访问API的自定义身份验证策略.我按照Devise中的示例代码忽略了自定义策略.

问题是有效吗?我的Api策略中的方法永远不会运行(基于试图撬开它).

我的代码:

module Devise
  module Strategies
    class Api < Devise::Strategies::Base
      def valid?
        binding.pry
        params[:request_source] == 'api'
      end

      def authenticate!
        #do stuff here

        if user
          success!(user)
        else
          warden.custom_failure!
          render :json=> {:success=>false, :message=>"Error with your login or password"}, :status=>401
        end
      end
    end

    Warden::Strategies.add(:api, Devise::Strategies::Api)

  end
end
Run Code Online (Sandbox Code Playgroud)

并在设计初始化程序中:

config.warden do |manager|
  manager.default_strategies.unshift :api
end
Run Code Online (Sandbox Code Playgroud)

无论我做什么,似乎Devise总是使用其默认策略.AFAIK,这应该够了......

- - - -编辑 - - - -

我在我的设计初始化程序的顶部需要这样的策略:

require Rails.root.join('app/devise/strategies/api')
Run Code Online (Sandbox Code Playgroud)

我知道策略是在启动时加载的,因为如果我在类中放入一个pry调用,它将启动一个pry会话.但是方法内部的Pry调用永远不会运行.:-S

ruby-on-rails devise warden

6
推荐指数
1
解决办法
2430
查看次数

Rails 4和Devise:在某些条件下允许电子邮件空白

我目前正在开发一个系统,只有当用户不是学生时才需要电子邮件,如果用户是学生则需要用户名.所以这就是我在模型中所做的:

class User < ActiveRecord::Base
  validates :email, presence: true, unless: :student?
  validates :username, presence: true, if: :student?
end
Run Code Online (Sandbox Code Playgroud)

这在用户名属性上工作正常,但对于电子邮件,我仍然会收到Email cannot be blank错误.我想Devise有自己的电子邮件验证规则.

我怎样才能使这个工作,我的意思是重写Devise验证电子邮件的存在规则?

谢谢

email validation ruby-on-rails devise

6
推荐指数
1
解决办法
2866
查看次数

如何禁用Devises消息 - "您已登录." - 重定向用户索引时?

我的网页上有一个按钮,用于将我的用户索引从params重定向回用户索引.我的问题是,当我通过按钮导航回users_path时,我会收到一条消息表单"你已经登录了".即使我没有尝试登录并且只是导航回同一页面但删除了参数,这种情况也会发生.

有问题的按钮看起来像,

<%= button_to "All Users", users_path, class: "button expand" %> 
Run Code Online (Sandbox Code Playgroud)

我在我的所有文件中搜索了"您已登录"的实例.唯一的参考是在devise.en.yml中所说的 already_authenticated: "You are already signed in."

ruby-on-rails devise

6
推荐指数
2
解决办法
2203
查看次数

Angular with Rails和Google Authenticator

我正在建立一个使用Ruby on Rails + AngularJS + 设计令牌身份验证Gem的网站,我想实现Google身份验证器.

我找到了这个gem devise_google_authenticator

问题是我无法实现Gem,因为我正在使用AngularJS.

ruby-on-rails devise google-authenticator angularjs

6
推荐指数
0
解决办法
375
查看次数