在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。 两者都有约定,可以自动为每个控制器上的每个方法添加权限检查。