如何使用nodejs从角度获得等效的“req.something”

Posted

技术标签:

【中文标题】如何使用nodejs从角度获得等效的“req.something”【英文标题】:How to get equivalent of "req.something" from in angular with nodejs 【发布时间】:2014-10-17 08:34:38 【问题描述】:

我正在关注如何使用 nodejs 和护照设置身份验证的教程。 (http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local)

本教程让我使用 ejs 渲染模板并传入 flash 数据。

而不是这个,我想使用 angularjs。我遇到问题的部分是获取闪存数据。我知道如何使用模板和发送变量,但是 Angular 中的什么替换了下面代码中的“req.flash('signupMessage')”?

这是教程显示的代码:

app.get('/signup', function(req, res) 
  // render the page and pass in any flash data if it exists
  res.render('signup.ejs',  message: req.flash('signupMessage') );    
);

这是我设置路线的代码

// public/js/appRoutes.js
angular.module('appRoutes', []).config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) 

$routeProvider

    // show signup form
    .when('/signup', 
        templateUrl: 'views/signup.html',
        controller: 'SignupController'  
    );
$locationProvider.html5Mode(true);

]);

这里是控制器:

 // public/js/controllers/SetupCtrl.js
 angular.module('SignupCtrl', []).controller('SignupController', function($scope) 
     $scope.tagline = 'TEST';
 );

【问题讨论】:

Flash 数据是一个服务器端(实际上是基于会话的)构造。您不能只在 angularjs 中“使用闪存数据”,因为 angular 是在客户端而不是服务器上运行的。您必须将闪存数据从服务器传递到客户端,然后对其进行处理(我猜您的意思是显示它)给用户。 angularjs 中没有任何东西替换 req.flash 【参考方案1】:

这里回答了一个类似的问题:What is the proper way to log in users using Angular & Express?

TLDR:发布的答案是以下链接,作者在其中描述您需要将所有护照资料保留在服务器端,然后允许客户端(角度资料)请求有关会话的信息。 http://vickev.com/#!/article/authentication-in-single-page-applications-node-js-passportjs-angularjs

【讨论】:

以上是关于如何使用nodejs从角度获得等效的“req.something”的主要内容,如果未能解决你的问题,请参考以下文章

如何从角度7中的任何IP地址获得响应

等效于角度的 getElementsByTagName

如何遍历从 REST API 获得的响应对象并以角度 2 在视图中显示数据

如何使用 mysql 数据库中的 nodejs 和 socket.io 在网页上获得实时更新?

nodejs-native-mongodb 的 runCommand 等效项

如何在熊猫中获得与 cume_dist 等效的 SQL?