Rails:如何将操作限制为仅限某些用户?

时间:2012-10-22 01:27:19

标签: ruby-on-rails

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

2 个答案:

答案 0 :(得分:2)

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

在功能文件中,只有当用户是所有者的朋友时,才将其配置为用户can,例如查看内容或编辑其他内容。然后在视图或控制器中,您可以检查用户是否有权执行相应的操作。

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

答案 1 :(得分:1)

考虑使用类似mosaic-access gem的内容,它允许您为当前登录的用户提供白名单/黑名单控制器和特定操作。