Rails Rails 怎么处理非浏览器的请求

shangrenzhidao · 2014年10月09日 · 最后由 flowerwrong 回复于 2014年10月10日 · 1798 次阅读

这个问题源自于 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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号