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.我不知道当前使用我的应用程序的用户是否是评论的作者,所以我无法控制他看到的内容.
当然,他无法以任何方式删除评论,因为我也在服务器上授权,但我宁愿不首先显示链接.
我怎么能做到这一点?
我喜欢这个主题的资源和答案的一些链接,因为我似乎找不到任何,即使在我看来这是一个应该在无数博客中涵盖的主题.
我更喜欢使用以下方法.
首先,在您的布局中,在服务器端生成,传递您在客户端需要的当前用户数据:
<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)