Rails:返回401?

时间:2010-01-16 00:28:59

标签: ruby-on-rails http

我想在declarative_authorizationpermission_denied方法中返回HTTP 401错误。

# triggered when a user accesses a page that they don't have access to
def permission_denied
  # render my default 401 error page?
end

我该怎么做? (原谅这个问题,如果它是愚蠢的...我知道如何在我的公共目录中呈现401.html页面,但我认为它不会返回401 HTTP标头,这就是我所追求的。)

2 个答案:

答案 0 :(得分:86)

您可以添加:status选项

def permission_denied
  render :file => "public/401.html", :status => :unauthorized
end

答案 1 :(得分:1)

在这里,您不必深入研究评论以获得现代答案。

上一个答案已在 Rails 5.1 中弃用

将其中任何一个放入您的控制器操作中:

渲染文件/模板

render :file => "public/401", :status => :unauthorized

渲染 JSON

render status: :unauthorized, json: { error: "You are not authorized to access this resource. Verify that you are passing passing your token." }

什么都不渲染

head :unauthorized