Tag: 身份validation

授予Rails应用程序API访问权限的最佳身份validation方法

我想为我的网络应用提供经过身份validation的API访问。 这种服务的消费者通常是其他网站/服务。 validation这些用户的最佳方法是什么? OAuth,openID,http身份validation?

使用设计API进行自定义身份validation

所以我在这里有一个小巧的组合 Company has many Users User belongs to Company 用户通过设计进行身份validation管理 class User < ActiveRecord::Base belongs_to :company devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable 您可以以用户身份登录并创建所有属于公司的对象,而不是用户,例如: Text 。 ( company.texts ) 现在我使用acts_as_api gem创建了一个简单的API。 对于这个我只需要修改我的文本控制器,fe show动作。 class TextsController @text } end 这在网站上运行得很好。 问题是API。 我不想通过用户模型访问api时进行身份validation。 该公司确实有一个名为:hash的属性,我希望在API中使用Auth。 我不知道如何使用设计(或任何其他方法)来实现这一点。 所以默认情况下,设计希望用户登录,因为我的控制器中有load_and_authorize_resource ,这对于html响应是好的,但对于json响应则没有。 有任何想法吗? 谢谢你读这个。 如果不清楚,请发表评论!

注册和登录时,nil的未定义方法`username’:NilClass

每当我尝试登录并注册时,我都会遇到此错误: nil的未定义方法`username’:NilClass 在这两行: 以下是服务器输出的完整错误: User Load (0.3ms) SELECT “users”.* FROM “users” WHERE “users”.”username” = ‘sign_in’ LIMIT 1 Rendered users/show.html.erb within layouts/application (2.1ms) Completed 500 Internal Server Error in 7ms ActionView::Template::Error (undefined method `username’ for nil:NilClass): 1: 2: 3: 4: app/views/users/show.html.erb:1:in `_app_views_users_show_html_erb__1133891108745893964_2164088020′ 这是我的路线: Stynyl::Application.routes.draw do resources :things resources :users, only: [:show] devise_for :users get ‘/about’, to: […]

如何通过电子邮件validation用户?

我有一个rails应用程序,它使用devise进行身份validation。 当应用程序向用户发送任何通知时,为了查看通知或消息,我提供了一个链接到我的rails应用程序,该应用程序重定向到登录页面。 如何避免此登录过程,意味着我不希望通过输入电子邮件和密码要求用户登录,而只要用户点击该链接,用户就应该自动登录。

如何避免Devise从引擎内部进行身份validation?

我在我的主应用程序中使用Devise进行身份validation,并且我使用“http_basic_authenticate_with”构建了一个API(用于PABX),当我将before_action :authenticate_user!, except: [:method_name]到我的控制器时,它运行良好。 我这样做是因为except: [:method_name]不需要在Devise上记录用户会话,我只想对这些API控制器使用基本身份validation。 config/routes.rb (主应用程序) scope module: ‘api’ do scope module: ‘pabx’ do scope ‘/api/pabx’ do get ‘/accounts/phone_number/:phone_number’, to: ‘accounts#phone_number’ end end end controllers/api/pabx/accounts_controller.rb (主要应用) class Api::Pabx::AccountsController < ApplicationController http_basic_authenticate_with name: 'some_name', password: 'some_password' before_action :authenticate_user!, except: [:phone_number] skip_before_filter :verify_authenticity_token # POST api/pabx/accounts/phone_number.json def phone_number … end end 当我想在Engine中执行与API类似的操作时,问题就出现了。 当我尝试访问路由时,Devise似乎不允许在没有身份validation的情况下访问它,即使我正在使用before_action :authenticate_user!, except: […]

HTML5缓存和授权问题

将HTML5缓存添加到rails on backbone中编写的单页应用程序后,我遇到了问题。 浏览器(chrome)没有重新加载html,这会以两种方式导致问题: 1)骨干的骨架html有时会发生变化 – 至少让骨干知道用户已登录。但是如果没有加载html,应用程序就不知道(例如刷新后)。 我可以在页面加载时查询服务器,但这是我跳过以避免的另一个请求。 此外,这将强制将所有permisions逻辑移动到客户端 – 因此要么从服务器复制cancan设置或将其嵌入到html中 – 我们遇到上述问题。 2)Rails的csrf标记在html中,它们也不会改变 – 导致任何ajaxpost无效。 对于这个,我不知道该怎么做。 从我读到的csrf令牌是为会话生成的,所以也许在登录/注销时我可以用js更新它。 然而,在哪里得到它,它会工作吗?

withings api身份validation

我正在尝试使用withings api进行身份validation。 我已经正确获得了消费者密钥和密码,并且能够访问应用页面,我还可以使用api进行身份validation。 问题是它没有回来,而是显示404错误:找不到页面。 我多次交叉检查回调url。 这是url 。 这是我试图validation的代码: Documentation , Gem1 , Gem2 。 我想让用户回到我的应用程序。 @callback_url = ‘http://127.0.0.1:3000/auth/withings/callback’ @consumer = OAuth::Consumer.new(WITHINGS_KEY, WITHINGS_SECRET, { :site => ‘https://oauth.withings.com’, :request_token_path => ‘/account/request_token’, :access_token_path => ‘/account/access_token’, :authorize_path => ‘/account/authorize’ }) @request_token = @consumer.get_request_token(:oauth_callback => @callback_url) session[:request_token] = @request_token redirect_to @request_token.authorize_url(:oauth_callback => @callback_url)

Rails 4 – 仅在当前密码正确时才允许更改密码

在我的应用中,用户可以编辑他们的个人资料信息 在编辑配置文件表单上,用户可以更改所有字段(名称,标题等)。 在同一表单上有三个字段: current_password , password和password_confirmation 。 我使用bcrypt的has_secure_passwordfunction进行密码validation。 我根本不使用Devise。 我希望用户只有在提供了正确的当前密码后才能更改密码。 我之前在使用Users控制器的update方法中使用了以下代码: # Check if the user tried changing his/her password and CANNOT be authenticated with the entered current password if !the_params[:password].blank? && !@user.authenticate(the_params[:current_password]) # Add an error that states the user’s current password is incorrect @user.errors.add(:base, “Current password is incorrect.”) else # Try to update […]

ActiveAdmin with Devise Rails登录两次

我有一个Rails应用程序已经设置为使用User模型的devise 。 我只是添加了ActiveAdmin ,它使用了一个单独的模型名称AdminUser 。 这个新模型也使用了设计。 我遇到的问题是: 当我转到localhost:3000/admin – 管理员登录页面时,应用程序首先将我引导至localhost:3000/users/sign_in – 一般用户登录页面。 换句话说,要进入管理页面,我必须登录两次。 有没有什么办法解决这一问题?

uninitialized constant devise :: controllers :: internalhelpers

我是rails的新手,目前正在使用devise gem进行身份validation。 我想从我的移动应用程序与我的服务器通信。 所以我通过JSON发送数据。 当我尝试登录时,它显示以下错误: ActionController::RoutingError (uninitialized constant Devise::Controllers::InternalHelpers): app/controllers/session_controller.rb:4:in `’ app/controllers/session_controller.rb:1:in `’ 当我使用设计gem版1.4.6时,它对我来说很好。 但是,我想使用设备版本2.1.0或更高版本,以便能够使用它支持的任何新function。 如果有人有这个运行或有任何想法,请帮助我。 提前致谢。 问候, 塞特希。