在Rails中添加路由安全性
在Rails 2中,如何防止用户只更改id#并访问其他对象?
例如 :
website.com/users/1231/edit
如何阻止用户更改1231
并访问其他帐户?
在控制器中使用before_filter
。
class Users < ApplicationController before_filter :require_user, :only => [:show] private def require_user @user = User.find_by_id(params[:id]) redirect_to root_url if @user.nil? end end
@user = User.find params[:id] redirect_to :back unless current_user == @user
使用权限检查gem,如CanCan或Aegis。 两者都有约定,可以自动为每个控制器上的每个方法添加权限检查。