Javascript 如何进行验证,以便只有具有唯一ID的用户才能访问应用程序的某些部分

Javascript 如何进行验证,以便只有具有唯一ID的用户才能访问应用程序的某些部分,javascript,jquery,ruby-on-rails,sqlite,backbone.js,Javascript,Jquery,Ruby On Rails,Sqlite,Backbone.js,我为主干网制作了经典的todolist应用程序(演练)。我在rails上设置了它(使用sqlite db)。My DB当前有一个问题表和一个用户表。每个问题ID都属于一个用户。我如何才能使只有创建问题的用户才能销毁问题 如果你能给我一个关于如何做的一般性解释,那将是一个很好的选择。我不是在寻找具体的代码示例,我想我可以做到这一点。如果你知道任何关于做这样的事情的好链接或设置/示例,我将不胜感激。谢谢 看看如何使用坎坎宝石 它将帮助您为用户创建角色,并允许他们对某些部分执行某些操作。这也使得将它们

我为主干网制作了经典的todolist应用程序(演练)。我在rails上设置了它(使用sqlite db)。My DB当前有一个问题表和一个用户表。每个问题ID都属于一个用户。我如何才能使只有创建问题的用户才能销毁问题


如果你能给我一个关于如何做的一般性解释,那将是一个很好的选择。我不是在寻找具体的代码示例,我想我可以做到这一点。如果你知道任何关于做这样的事情的好链接或设置/示例,我将不胜感激。谢谢

看看如何使用坎坎宝石

它将帮助您为用户创建角色,并允许他们对某些部分执行某些操作。这也使得将它们拉入HTML erb变得非常简单


我个人不喜欢坎坎宝石:)(别问我为什么)

我在控制器中执行此操作

def destroy
  question = load_question
  render status: :not_found, nothing: true and return unless question.present?

  //destory your question here
end

private

  def load_question
    Question.where(id: params[:id], user_id: current_user.id).first
  end
因此,只有当前用户可以删除该问题,其他用户将获得404(为什么不使用403?当然可以,但我喜欢对用户隐藏资源,以便他们不知道系统中是否存在不属于他们的内容)

编辑

通常,您可能还希望在UI中隐藏“删除”按钮。只要前端有当前用户的对象可用,就很容易在主干网中实现。您可以在模板中完成:(或通过问题模型中的助手方法)

//
//删除按钮

签出
cancan
-
// <% if (question.belongsTo(App.CurrentUser)) { %>
<% if (question.get('user_id') === App.CurrentUser.id) { %>
  //delete button
<% } %>