【发布时间】:2020-02-16 23:14:09
【问题描述】:
我的 rails 控制器有两种类型的处理程序,一种是对网页的常规响应,另一种旨在响应来自 Angular 的 $http get 请求,并返回 json 以供页面 javascript 代码处理。
我使用 devise,我在我的应用程序控制器顶部使用此代码
protect_from_forgery
before_action :authenticate_user!
after_action :set_csrf_cookie
问题是,例如,当登录失效时,我认为 authenticate_user 将我的“未经授权”网页返回给调用者,而不是通知调用者当前用户不再被授权的 json,并且然后我可以正确处理客户端的情况。
任何关于有效方法的想法,而不必取出authenticate_user!来自应用程序控制器。
我的大多数控制器都有大约 15 条路由的处理程序,其中大约 50/50 用于将 json 返回到 ajax 调用,而其他的则返回网页。我喜欢 authenticate_user 的安全性!在应用程序控制器中提供,并且犹豫要删除它,而是必须有不同的代码来处理我的每个方法中的安全性。
谢谢。
【问题讨论】:
-
'我认为 authenticate_user 正在将我的“未经授权的”网页返回给调用者'——这真的很容易测试。只需在浏览器的检查器中打开网络选项卡即可。
-
我确定有一个网页正在返回给调用者。我无法追踪到控制器方法,因为如果 authenticate_user 它将永远不会运行!失败了,但我很确定这是怎么回事。
标签: ruby-on-rails devise