0

我目前正在做一个上传图片的项目。有用户、相册和图片。我添加了一个友谊模型,这样人们就可以像社交网络一样互相交朋友。但是,我注意到我<% if current_user.friends.include?(@user) %>在视图中放了很多东西来检查我正在显示的页面的用户是否是登录客户端的朋友,因此允许他们拥有某些权限和表单等。是否有比用 if/else 语句污染我的观点更好的方法或地方吗?另外,我觉得我的方法不是很安全,因为有人总是可以手动输入 url 并弄乱他们不应该输入的信息。

4

2 回答 2

2

您需要一个授权框架,例如CanCan

在功能文件中,您可以配置用户can,例如,查看某些内容或编辑某些其他内容,前提是该用户是所有者的朋友。然后在视图或控制器中,您只需检查用户是否有权执行适当的操作。

有关根据模型的详细信息设置能力的具体细节(即所有者是否是当前用户的朋友),请转到此文档并查找“条件哈希”。

于 2012-10-22T02:32:50.913 回答
1

考虑使用诸如镶嵌访问gem 之类的东西,它允许您将控制器和当前登录用户的特定操作列入白名单/黑名单。

于 2012-10-22T02:47:45.357 回答