我正在使用Rails-api制作一个使用Devise_token_auth宝石的测试认证应用程序。 的User.rb模型看起来像在Rails API中使用Devise Token Auth宝石的未经许可的参数
class User < ActiveRecord::Base
before_save :set_auth_token
# Include default devise modules.
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:confirmable, :omniauthable
include DeviseTokenAuth::Concerns::User
private
def set_auth_token
if self.authentication_token.blank?
self.authentication_token = generate_authentication_token
end
end
def generate_authentication_token
loop do
token = Devise.friendly_token
break token unless User.where(authentication_token: token).first
end
end
end
的routes.rb包含
mount_devise_token_auth_for 'User', at: 'auth'
我也是使用DeviseTokenAuth宝石定义的默认SessionsController和RegistrationsController
我的前端是在Ember-cli中制作了一个使用Ember-simple-auth-devise的登录表单,Devise authorizer调用/ sign_in ur升轨api。 余烬简单AUTH包装等
{"user"=>{"password"=>"[FILTERED]", "email"=>"[email protected]"}}
的参数而DeviseTokenAuth期望轨道上的请求参数,如
{"password"=>"[FILTERED]", "email"=>"[email protected]"}
产生的误差是
Processing by DeviseTokenAuth::RegistrationsController#create as JSON
Parameters: {"user"=>{"password"=>"[FILTERED]", "email"=>"[email protected]"}}
Unpermitted parameter: user
的问题是可以解决的,如果Rails DeviseTokenAuth gem接受包装在“user”中的参数或者Ember-simple-auth发送参数解包,但不幸的是,他们两人的文档都没有明确提及实现它们的方式。 我试图改变资源名称为灰烬,简单身份验证为空,但它没有工作
ENV['simple-auth-devise'] = {
resourceName: null,
serverTokenEndpoint: 'http://localhost:3000/auth/sign_in'
};
有没有办法在发送解开参数灰烬,简单的认证 - 设计? 或者是否可以允许使用DeviseTokenAuth gem生成的所有控制器的“user”中包含的参数?使用
版本是:
devise_token_auth (0.1.36)
devise (~> 3.5.2)
rails (~> 4.2)
"ember-simple-auth": "0.8.0"
我认为你将不得不使用烬,简单权威性而不色器件插件,自己滚吧。它看起来像特定于香草设计的设计插件。 – penner
Github问题https://github.com/lynndylanhurley/devise_token_auth/issues/822 –