设计只处理身份验证,而不是授权。它确保存在 current_user,但不确保该用户是否应该查看特定资源。
像 CanCan 这样的东西将是一个很好的全方位授权解决方案。您可以在Ruby 工具箱中找到更多信息。
但是对于一些快速而肮脏的事情,你可以在你的 users_controller 中做这样的事情:
before_filter :get_user, :user_views_only_own_records
def get_user
@user = User.find_by_id(params[:id])
head :404 if @user.nil?
end
def user_views_only_own_records
if @user.id != current_user.id
head :403 # or whatever you want to do when someone tries to peek at another user
end
end
但是在某些时候,您会希望允许管理员查看任何用户或其他类似情况,并且一旦您开始为不同角色定义不同的访问级别,您将需要 CanCan 或类似的东西来使其更容易。