我有一条路线match "company/:company_id/edit_users"
我想锁定给当前登录的用户。
例如,当前登录的用户与公司ID为1。
因此,用户应该可以访问/company/1/edit_users
,但无法访问/company/2/edit_users
如何确保此安全,并重定向到“未经授权的访问”?如果用户尝试访问他们无权查看的网页,该页面会显示?
答案 0 :(得分:1)
您可以在公司控制器中设置类似verify_access
方法的内容(假设路由处理的位置),您为before_action
方法调用edit_users
。把它放在控制器的顶部附近:
before_action :verify_access, :only => [:edit_users]
然后将该方法定义为私有方法,可能是这样的:
private
def verfiy_access
unless current_user.company.id == params[:id]
flash[:alert] = "You do not have authority to access that page."
redirect_to unauthorized_access_path
end
end
您需要为自己的应用自定义此功能,并确保其适当限制访问权限。
如果需要,您还可以展开before_action
以包含其他操作:
before_action :verify_access, :only => [:edit_users, :update_users, :destroy_users]