Angularjs 如何将会话变量从express/node传递到angular?
所以基本上我使用的是角度路由,只是使用express来呈现索引页面 我想将一个会话变量从express传递到angular,但我不知道如何在每个angular路径中获取该变量 app.js(express): Index.htmlAngularjs 如何将会话变量从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的会话值。
<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