Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何将会话变量从express/node传递到angular?_Angularjs_Node.js_Session_Express - Fatal编程技术网

Angularjs 如何将会话变量从express/node传递到angular?

Angularjs 如何将会话变量从express/node传递到angular?,angularjs,node.js,session,express,Angularjs,Node.js,Session,Express,所以基本上我使用的是角度路由,只是使用express来呈现索引页面 我想将一个会话变量从express传递到angular,但我不知道如何在每个angular路径中获取该变量 app.js(express): Index.html <body> <div class="main" ng-view> </div> </body> 所以基本上我想发送一个经过身份验证的变量和用户变量,这些变量将具有从express到angular的会话值。

所以基本上我使用的是角度路由,只是使用express来呈现索引页面

我想将一个会话变量从express传递到angular,但我不知道如何在每个angular路径中获取该变量

app.js(express):

Index.html

<body>
<div class="main" ng-view>
    </div>
  </body>

所以基本上我想发送一个经过身份验证的变量和用户变量,这些变量将具有从express到angular的会话值。我应该如何处理这些值,以便angular中的所有路由都可以访问这些值,以及如何在相应的angular controller中获取这些值。

我认为这是不可能的

即使在使用
sendFile
时,只要设置了
查看引擎,您仍然可以在文件中使用任何类型的模板


您可以将其存储在一个可能隐藏的元素中,然后使用js从中获取信息,或者我认为angular在您的控制器加载后使用类似服务的方式加载此类数据

<input type="hidden" id="auth" value="#{authenticated}"/>

然后,只要在控制器加载后使用JavaScript获取值即可

<input type="hidden" id="auth" value="#{authenticated}"/>

但这是一种老生常谈的方式,并不是一种有棱角的做事方式。我很确定你应该为此使用服务

我认为这是不可能的

    app.get('*', function (req, res) {
        res.sendFile(__dirname+'/client/views/index.html',{
            isAuthenticated:req.isAuthenticated(),
            user:req.user
        });
    });
即使在使用
sendFile
时,只要设置了
查看引擎,您仍然可以在文件中使用任何类型的模板


您可以将其存储在一个可能隐藏的元素中,然后使用js从中获取信息,或者我认为angular在您的控制器加载后使用类似服务的方式加载此类数据

<input type="hidden" id="auth" value="#{authenticated}"/>

然后,只要在控制器加载后使用JavaScript获取值即可

<input type="hidden" id="auth" value="#{authenticated}"/>
但这是一种老生常谈的方式,并不是一种有棱角的做事方式。我很确定你应该为此使用服务

    app.get('*', function (req, res) {
        res.sendFile(__dirname+'/client/views/index.html',{
            isAuthenticated:req.isAuthenticated(),
            user:req.user
        });
    });
这真是个坏主意。有更好的方法可以做到这一点。这就是你面临分享问题的原因。 下面的方法会起作用,请注意,我的解决方案只是让您开始了解如何做这样的事情,为了确保安全,您可能必须重新构建angularjs应用程序,并执行我正在做的操作,但在ng服务或ng工厂内,并将其注入控制器中。这样您就可以访问它

考虑以下内容

app.js

./routes/index.js

/视图/layout.hbs


{{title}}
{{{body}}}
var isAuthenticated={{isAuthenticated};
var user={{{user}}};
./views/index.hbs

{{title}
下面是快照--概念验证

现在,我刚刚将变量注入到普通的公共js变量中,您需要编写ng服务/ng工厂来进行封装

以下是我建议的结构

    .
    ├── LICENSE
    ├── README.md
    ├── app.js
    ├── bin
    │   └── www
    ├── package.json
    ├── public
    │   ├── images
    │   ├── javascripts
    │   ├── views
    │   │   └── <angular view templates>
    │   └── stylesheets
    │       └── style.css
    ├── routes
    │   └── index.js
    │   
    └── views
        ├── error.hbs
        ├── index.hbs //Your actual index file, this will contain ng-view
        └── layout.hbs
。
├── 许可证
├── 自述文件
├── app.js
├── 箱子
│   └── 万维网
├── package.json
├── 平民的
│   ├── 图像
│   ├── Java脚本
│   ├── 意见
│   │   └── 
│   └── 样式表
│       └── 样式表
├── 路线
│   └── index.js
│   
└── 意见
├── error.hbs
├── index.hbs//您的实际索引文件,这将包含ng视图
└── 布局图.hbs
希望这有帮助!!如果我能提供进一步的帮助,请告诉我

这真是个坏主意。有更好的方法可以做到这一点。这就是你面临分享问题的原因。 下面的方法会起作用,请注意,我的解决方案只是让您开始了解如何做这样的事情,为了确保安全,您可能必须重新构建angularjs应用程序,并执行我正在做的操作,但在ng服务或ng工厂内,并将其注入控制器中。这样您就可以访问它

考虑以下内容

app.js

./routes/index.js

/视图/layout.hbs


{{title}}
{{{body}}}
var isAuthenticated={{isAuthenticated};
var user={{{user}}};
./views/index.hbs

{{title}
下面是快照--概念验证

现在,我刚刚将变量注入到普通的公共js变量中,您需要编写ng服务/ng工厂来进行封装

以下是我建议的结构

    .
    ├── LICENSE
    ├── README.md
    ├── app.js
    ├── bin
    │   └── www
    ├── package.json
    ├── public
    │   ├── images
    │   ├── javascripts
    │   ├── views
    │   │   └── <angular view templates>
    │   └── stylesheets
    │       └── style.css
    ├── routes
    │   └── index.js
    │   
    └── views
        ├── error.hbs
        ├── index.hbs //Your actual index file, this will contain ng-view
        └── layout.hbs
。
├── 许可证
├── 自述文件
├── app.js
├── 箱子
│   └── 万维网
├── package.json
├── 平民的
│   ├── 图像
│   ├── Java脚本
│   ├── 意见
│   │   └── 
│   └── 样式表
│       └── 样式表
├── 路线
│   └── index.js
│   
└── 意见
├── error.hbs
├── index.hbs//您的实际索引文件,这将包含ng视图
└── 布局图.hbs

希望这有帮助!!请告诉我是否可以提供进一步帮助。

通常,在用户经过身份验证后,您会将用户数据存储在服务中,因此,您可以在angular应用程序上随时访问此服务,以检查用户是否已登录。您的意思是,我创建了一个服务,为会话用户变量发出get请求,并将此服务包含在每个控制器中,并在控制器开始时检查此服务@这是一个可能的选择,您在express中为会话使用的中间件是什么?护照还是特快专递?在我的流程中,我使用的是express session,因此在登录后会返回一个会话cookie
    .
    ├── LICENSE
    ├── README.md
    ├── app.js
    ├── bin
    │   └── www
    ├── package.json
    ├── public
    │   ├── images
    │   ├── javascripts
    │   ├── views
    │   │   └── <angular view templates>
    │   └── stylesheets
    │       └── style.css
    ├── routes
    │   └── index.js
    │   
    └── views
        ├── error.hbs
        ├── index.hbs //Your actual index file, this will contain ng-view
        └── layout.hbs