【问题标题】:devise and authentication设计和认证
【发布时间】:2011-06-05 01:40:39
【问题描述】:

我整天都在尝试通过简单的 get 进行身份验证。

class ApiController < ApplicationController
  def signin
    warden.authenticate(params[:email], params[:password])
    render :json => current_user.to_json
  end
end

当我用 http://localhost:3000/api/signin?email=theemailaddress&password=thepassword 之类的东西点击它时

我收到消息:“无效策略邮件地址”,这里是堆栈:

warden (1.0.4) lib/warden/proxy.rb:323:in `_fetch_strategy'
warden (1.0.4) lib/warden/proxy.rb:307:in `block in _run_strategies_for'
warden (1.0.4) lib/warden/proxy.rb:306:in `each'
warden (1.0.4) lib/warden/proxy.rb:306:in `_run_strategies_for'
warden (1.0.4) lib/warden/proxy.rb:279:in `_perform_authentication'
warden (1.0.4) lib/warden/proxy.rb:90:in `authenticate'
actionpack (3.0.7) lib/action_controller/metal/implicit_render.rb:5:in `send_action'

我需要什么才能让这样的事情发生?

【问题讨论】:

    标签: ruby-on-rails ruby devise warden


    【解决方案1】:

    您需要定义自定义的warden 策略并检查请求标头。看什么I did here

    【讨论】:

    • 除此之外,我还必须在呼叫守望者时指定策略。 "warden.authenticate!(:loginstrategy)"
    • 还需要注意的是,一旦你获得了用户,你就可以调用 user.validate_password?(password)
    • 确实如此。在我的情况下,我没有使用密码,我只需要用户名来创建/获取一个帐户,因为代理处理了所有的预身份验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 2014-08-16
    • 1970-01-01
    • 2019-09-16
    • 2018-12-19
    • 1970-01-01
    相关资源
    最近更新 更多