【发布时间】:2014-09-17 13:38:38
【问题描述】:
我正在编写一个应用程序,它使用普通的旧 Ruby 对象 (PORO) 从控制器中抽象出授权逻辑。
目前,我有一个名为NotAuthorized 的自定义异常类,我在控制器级别使用rescue_from,但我很想知道:Rails 4 是否已经带有一个异常来指示某个操作不是授权?我是否通过实施此例外重新发明轮子?
澄清:raise AuthorizationException 不会发生在控制器内部的任何地方,它发生在控制器外部完全解耦的 PORO 内部。该对象不了解 HTTP、路由或控制器。
【问题讨论】:
-
那么 http 错误代码 401 表示未经授权,您可以告诉 rails 返回 401 状态代码,并呈现您想要的任何视图
-
@MohammadAbuShady - 我相信他正在寻找像
raise ActionController::RoutingError.new('Not Found')这样的东西,它会自动强制应用程序在没有任何救援状态的情况下呈现 404。 -
我通常只使用 devise + cancan,一个很好的身份验证和授权组合
-
同意@MohammadAbuShady,但是,如果你走那条路,请确保它是 CanCanCan,因为 CanCan 已被放弃 :)!
-
我不知道,我去看看,谢谢你的信息
标签: ruby-on-rails ruby actioncontroller