我希望能够允许用户使用AJAX对资源进行投票,但是,我不确定如何在资源的控制器中获取current_user的ID。

我到处搜索,并且阅读了很多建议将user_id保存为隐藏字段,然后使用该建议来发送AJAX请求,但这不会使我面临安全漏洞吗?任何恶意用户都可以更改user_id,然后以他选择的随机用户的身份进行投票。

获取AJAX请求的current_user的ID的标准方法是什么?

谢谢

最佳答案

如果整个过程都落后于身份验证,则无需在视图中存储user_id,也无需花费任何精力进行传递。只需像往常一样访问控制器中的current_user(或current_user.id)。

所谓“整个过程都在身份验证背后”,是指具有表决接口的视图的控制器以及AJAX请求的目的地的控制器都应具有before_filter :authenticate_user!或从具有该属性的类派生。如果是这种情况,则devise将以对其他所有经过身份验证的请求相同的方式识别用户。该请求为JSON没关系,除非您还没有这样的要求,否则您可能需要调整未经授权的行为以包括将JavaScript重定向到您的登录名。

09-20 23:31