这可能很简单;我不太了解Rails。
我的routes.rb中有一个match myController/myAction/myID
,它会将超链接定向到正确的页面(使用link_to
)。但问题在于:我不希望人们能够自由地修改id
参数,通过URL传入任何他们喜欢的内容。
是否有办法可以仅限制对link_to
方法的路由的访问?或许还有另一种方法可以解决这个问题,使用传入的隐藏变量参数或什么?
答案 0 :(得分:2)
用户通过以下网址访问您的网站:/ controller / action /:id对吗?用户可以更改ID,不得查看其他非授权资源。如何在控制器上实现此功能?只返回允许用户访问的那些资源。
例如,假设您使用的是devise:
class AController < ApplicationController
def index
@resouces = current_user.find_all_by_id params[:id]
end
end
这样,如果用户试图访问他无权访问的内容,他将收到错误。
希望这会有所帮助,如果没有,请告诉我,我会尽力详细说明。
关于 current_user ,是的,它应该是当前登录的用户,它不必是设计,您可以实现自己的会话处理逻辑,然后创建一个帮助方法来检索当前登录的用户。
关于使用设计,如果您不想实现自己的会话处理逻辑,还需要以下功能:
然后设计是一个很好的方法。
此外,它总是一个好主意,如果可能的话,作为一个学习练习,实施自己的身份验证和授权层,你不会后悔。
祝你好运
Emmanuel Delgado