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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |