加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – authenticate_or_request_with_http_token返回

发布时间:2020-12-16 19:54:41 所属栏目:百科 来源:网络整理
导读:我创建了一个rails-api应用程序,并继续使用令牌认证来保护它. 我设置了一个before_filter,它调用一个使用authenticate_or_request_with_http_token的方法.一切正常工作,但当验证不正确时,我得到一个html响应. 如何定义响应应该是什么格式? before_filter :r
我创建了一个rails-api应用程序,并继续使用令牌认证来保护它.

我设置了一个before_filter,它调用一个使用authenticate_or_request_with_http_token的方法.一切正常工作,但当验证不正确时,我得到一个html响应.

如何定义响应应该是什么格式?

before_filter :restrict_access

private

def restrict_access
  authenticate_or_request_with_http_token do |token,options|
    check_token token
  end
end

def check_token(token)
  Session.exists?(access_token: token)
end

解决方法

通过包括ActionController :: HttpAuthentication :: Token :: ControllerMethods,您可以包括几个方法,其中request_http_token_authentication是简单的Token.authentication_request周围的包装器. #authentication_request-method是弊端,并发送纯文本(不是您的问题建议的HTML)如下:
def authentication_request(controller,realm)
  controller.headers["WWW-Authenticate"] = %(Token realm="#{realm.gsub(/"/,"")}")
  controller.__send__ :render,:text => "HTTP Token: Access denied.n",:status => :unauthorized
end

诀窍是覆盖ApplicationController中的request_http_token_authentication,以不调用Token.authentication_request,但要设置正确的状态和标题,然后渲染JSON.将其添加到您的ApplicationController中:

protected
def request_http_token_authentication(realm = "Application")
  self.headers["WWW-Authenticate"] = %(Token realm="#{realm.gsub(/"/,"")}")
  render :json => {:error => "HTTP Token: Access denied."},:status => :unauthorized
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读