将后端快速会话变量传递给Angular

时间:2014-09-14 23:15:56

标签: javascript node.js angularjs express pug

当前代码:

<div ng-controller="HeaderCtrl" class="header">
  <div class="logo">intquest</div>

  <div ng-if="signed_in" class="header-actions">
    <a href="/#/random">Random</a>
    <a href="/#/add">Add question</a>
  </div>

  <div ng-if="!signed_in" class="header-actions">
    <a href="/#/register">Register</a>
    <a href="/#/login">Login</a>
  </div>
</div>

我想以某种方式将我的Express会话var传递给$scope.signed_in变量。因为这是一个HTML而不是Jade模板,我无法使用JSON.stringify,我没有后端API,因此我认为我不能提出$http或资源请求,我应该这样做吗?什么是最佳实践?

1 个答案:

答案 0 :(得分:1)

我可以想到两件事,假设您无法创建后端API:

  1. 查看是否存在Cookie。尝试将$cookes服务注入HeaderCtrl并检查它以查看您的Expression会话是否留下任何Cookie。如果你这样做并且你知道它的名字(看起来像是来自this'connect.sid' - 除非你覆盖了默认值),那么只需将$scope.signed_in设置为一个返回cookie是否的表达式与该名称一起出现。这假设在注销时cookie不存在。我不知道这是否属实。

  2. 如果这不起作用,如果绝对无法进行API调用,请尝试从Cookie中读取值我认为您可能需要确保Cookie没有一个秘密等等 - 然后我会假设它可以从客户端/ Angular内部读取。

  3. 让我知道如果这两个都不起作用,或者你不能/不想这样做(以及为什么),我会看看我是否能想到另一种选择(基于你的原因/约束)。