如何在客户端管理当前用户会话?

Dav*_*ite 8 javascript authentication ruby-on-rails backbone.js

我有一个Web应用程序,它是Rails和部分Backbone的一部分.我实现的评论系统等一些东西主要是在客户端的Javascript中编写的.Rails后端只是通过来回传递JSON来处理持久性.

当我从服务器渲染页面时,处理谁可以看到什么是容易的.我可以说像

<li class="comment">
  <span class="comment_text"><%= @comment.text %></span>
  <% if user_signed_in? and current_user == @comment.author %>
    <a class="delete" href="some delete url">Delete Comment</a>
  <% end %>
</li>
Run Code Online (Sandbox Code Playgroud)

如果当前用户是评论的作者,那么只会呈现删除特定评论的链接.没问题.

但是,现在我正在使用JavaScript模板(缓存为afaik)在客户端呈现注释,我无权访问current_user.我不知道当前使用我的应用程序的用户是否是评论的作者,所以我无法控制他看到的内容.

当然,他无法以任何方式删除评论,因为我也在服务器上授权,但我宁愿不首先显示链接.

我怎么能做到这一点?

我喜欢这个主题的资源和答案的一些链接,因为我似乎找不到任何,即使在我看来这是一个应该在无数博客中涵盖的主题.

dae*_*aeq 7

我更喜欢使用以下方法.

首先,在您的布局中,在服务器端生成,传递您在客户端需要的当前用户数据:

<script type="text/javascript">
    window.currentUser = {
        id : "<%=current_user.id%>"
    }
</script>
Run Code Online (Sandbox Code Playgroud)

它可以在您的EJS模板中访问.现在在模板中,您可以进行与服务器端相同的检查:

<% if (window.currentUser && window.currnetUser.id == comment.author.id) { %>
    <a class="delete" href="some delete url">Delete Comment</a>
<% } %>
Run Code Online (Sandbox Code Playgroud)