我正在使用Passport.js使用Easy Node Authentication:Setup and Local教程构建一个身份验证系统.
我很困惑passport.session().
在使用不同的中间件后,我开始明白这express.session()是通过cookie向客户端发送会话ID的内容,但我很困惑passport.session()除了之外需要什么以及为什么需要它express.session().
以下是我设置应用程序的方法:
// Server.js配置应用程序并设置Web服务器
//importing our modules
var express = require('express');
var app = express();
var port = process.env.PORT || 8080;
var mongoose = require('mongoose');
var passport = require('passport');
var flash = require('connect-flash');
var configDB = require('./config/database.js');
//Configuration of Databse and App
mongoose.connect(configDB.url); //connect to our database
require('./config/passport')(passport); //pass passport for configuration
app.configure(function() {
//set up our express application
app.use(express.logger('dev')); //log every request to …Run Code Online (Sandbox Code Playgroud) 我一直在努力解决这个问题.我是Javascript的新手,并且一直认为我写的代码已经异步运行了.这是一个通用的例子:
我在函数a中运行了一些代码.函数A然后调用函数B,函数B需要将变量返回给A,因此A可以在以后的操作中使用它.看来,当A调用B时,它仍然继续运行自己的代码,而不是等待其返回值被阻塞,并且B不够快,使得A最终到达需要使用返回的点值,我得到一个未定义的变量类型错误.
我解决这个问题的方法是函数A调用函数B然后调用一个函数C,它将执行A将使用返回值执行的后续操作....我有点通过调用序列化我的代码而不是返回......虽然很麻烦......
以下是在实际代码中发生的示例:
function initialize() {
//Geocode Address to obtin Lat and Long coordinates for the starting point of our map
geocoder = new google.maps.Geocoder();
var results = geocode(geocoder);
makeMap(results[0].geometry.location.lat(), results[0].geometry.location.lng());
}
function geocode(geocoder) {
//do geocoding here...
var address = "3630 University Street, Montreal, QC, Canada";
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
return results;
}
else {
alert("Geocode was not successful for the following reason: " + status);
} …Run Code Online (Sandbox Code Playgroud) 我用护照创建了一个简单的身份验证应用程序(参见下面的代码).通过会话中间件快速,在请求客户端尚未拥有会话的每个请求上创建会话.我想在登录后分配会话,或者在登录后创建新会话.
这是因为我最终将通过HTTPS进行登录,并希望防止黑客劫持已经过身份验证的用户的会话.
这是我的服务器代码:
// Server.js configures the application and sets up the webserver
//importing our modules
var express = require('express');
var app = express();
var port = process.env.PORT || 8080;
var mongoose = require('mongoose');
var passport = require('passport');
var flash = require('connect-flash');
var MongoStore = require('connect-mongo')(express);
var configDB = require('./config/database.js');
//Configuration of Databse and App
mongoose.connect(configDB.url); //connect to our database
require('./config/passport')(passport); //pass passport for configuration
app.configure(function() {
//set up our express application
app.use(express.logger('dev')); //log every request to the console
app.use(express.cookieParser()); …Run Code Online (Sandbox Code Playgroud) 我是 JavaScript 新手。
我应该如何在外部脚本之间拆分我的函数?什么被认为是好的做法?我应该将所有函数都塞进一个外部.js文件中还是应该将类似的函数分组在一起?
我猜想更多的文件意味着更多的 HTTP 请求来获取脚本,这可能会降低性能?然而,更多的文件使事物变得井井有条:例如,onload.js在加载时初始化事物、data.js从服务器检索数据、ui.js引用 UI 处理程序......
专业人士对此有何建议?
谢谢!
可能的重复:
克鲁斯卡尔 vs 普里姆
你什么时候会使用 Kruskal 算法而不是 Prim 算法来找到最小生成树?哪种输入图和节点更适合每种类型?在什么情况下,在空间和时间方面使用其中之一更有效?
他们的特定输入是否使一个比另一个好得多?
javascript ×2
node.js ×2
passport.js ×2
session ×2
algorithm ×1
asynchronous ×1
callback ×1
express ×1
graph ×1