这个问题源自于 Rails tutorial 上的一个练习,如果管理员模拟 HTTP 请求删除自身(我知道管理员一般不会这么做),不是通过浏览器,那么我在 controller 中如何进行处理,我的思路是拿到请求中的要删除的 id 值,如果这个 id 和管理员的 id 相同,那么就不去执行删除。可是我不知道如何拿到这个 id。求大家帮帮忙。
Rails 一般不是依赖 CSRF TOKEN 来解决此类问题么
和浏览器的做法没区别啊……
……
Grape
你可以参考一下 ruby-china 的 API 设计,里面是通过一个 token 来得知发起当前请求的用户是谁
# user helpers def current_user token = params[:token] || oauth_token @current_user ||= User.where(private_token: token).first end
grape/helpers.rb
#3 楼 @assyer 浏览器一般基于 session, api 一般基于 access_token,简单的基于 http baseAuth