Articles of 快递

如何将护照与路由控制器结合起来?

我目前正试图执行passport-ldap和passport-jwt到我的rest API。 对于路由,我使用pleerock /路由控制器 ,它有一个授权的方式,但它与布尔和护照工作,我真的不知道。 我甚至不确定是否有可能将两者结合起来。 目前AuthorizationChecker返回false,因为我不知道如何使passport.authenticate成为一个布尔值。 useExpressServer(app, { controllers: [UserController, IssueController, LoginController], authorizationChecker: async (action: Action) => { return false; } @Authorized() @Get("/test") test(@Res() response: Response){ response.send("Test done.") } 如何使用passport.authenticate()与路由控制授权?

如何在没有会话的Facebook Passport之后redirect到之前的URL

我试图redirect回到引用标题中的链接,但在Facebookcallback请求不包含引用标题。 app.get( // referer present '/login/facebook', passport.authenticate('facebook', { scope: ['email'], session: false }), ); app.get( // referer not present '/login/facebook/return', passport.authenticate('facebook', { failureRedirect: config.CLIENT_URI, session: false }), (req, res) => { const { secret, expiresIn } = config.jwt; const id = Array.isArray(req.user) ? req.user[0].id : req.user.id; // Redirect to client const token = jwt.sign({ id […]

用nodejs和连接forms上传文件

我已经按照快速多部分示例上传文件到服务器,它工作正常。 但是,如果我使用这样的路由中间件(coffeescript): loadUser = (req, res, next) -> if req.session.user_id? db.user.findById req.session.user_id, (err, user) -> if user? req.currentUser = user next() else next() else next() app.post '/file',loadUser, (req, res) -> req.form.complete (err, fields, files) -> if (err) console.error err else console.log '\nuploaded %s to %s', files.image.filename, files.image.path req.form.on 'progress', (bytesReceived, bytesExpected) -> percent = (bytesReceived […]

Passport.js – 在会话中存储信息

我目前有一个mongoose/快递/ passportjs应用程序,我可以成功login和退出。 但是,只有用户标识存储在会话中。 我希望商店的整个用户对象。 这是我使用的代码: passport.serializeUser(function(user, done) { done(null, user._id); }); passport.deserializeUser(function(_id, done) { done(null, { _id: _id }); }); 伟大的作品,这就是为什么我试图序列化整个用户: passport.serializeUser(function(user, done) { done(null, user._id); }); passport.deserializeUser(function(user, done) { done(null, user); }); 但是,它不存储任何会话。 我究竟做错了什么?

在服务器端Node.JS上倒数一次,并发送一个页面的响应

我有一个问题,我似乎无法find如何去做 – 我见过很多客户端倒计时插件,我有一个在我的应用程序 – 但是我有兴趣计数到我的服务器上的某个date,一旦这个date和时间到了,我想触发一个响应客户端一个popup页面。 现在 – 我已经尝试在倒计时.onFinishfunction在客户端做到这一点。 但是从我的理解来看,除非客户端在倒计时完成时在应用程序中,否则无法工作。 我是否正确地认为客户端脚本只在客户端进入应用程序时生成? 因此,当用户进来时,计时器已经重新启动(在login我更新计时器倒数到最近的星期一在21:00)。 在服务器上 – 我可以检查date是否已经到达,在一个函数之外,但这只会发生一次部署,是否正确? 如果我每隔一段时间检查一次,每次更新应用程序,这些时间间隔都会变得混乱,我可能会错过00:00的时间。 这是我在服务器上的想法(使用expressJS,nodeJS) var today = new Date(); var currentDay = today.getDay() + 1; var currentMonth = today.getMonth() + 1; var currentDate = today.getDate(); var currentYear = today.getFullYear(); //var date = [02, 22, 2014]; var dateTillMatch = findNearestMonday(currentDay, currentDate, currentMonth, currentYear); if […]

错误:未能在会话中为passport-twitterfind请求令牌

以下是我使用passport-twitter时得到的错误 – Error: Failed to find request token in session at Strategy.OAuthStrategy.authenticate (/MYPROJECT/node_modules/passport-twitter/node_modules/passport-oauth1/lib/strategy.js:142:54) at Strategy.authenticate (/MYPROJECT/node_modules/passport-twitter/lib/strategy.js:85:40) at attempt (/MYPROJECT/node_modules/passport/lib/middleware/authenticate.js:337:16) at Object.authenticate [as handle] (/MYPROJECT/node_modules/passport/lib/middleware/authenticate.js:338:7) at next_layer (/MYPROJECT/node_modules/express/lib/router/route.js:103:13) at Route.dispatch (/MYPROJECT/node_modules/express/lib/router/route.js:107:5) at /MYPROJECT/node_modules/express/lib/router/index.js:205:24 at Function.proto.process_params (/MYPROJECT/node_modules/express/lib/router/index.js:269:12) at next (/MYPROJECT/node_modules/express/lib/router/index.js:199:19) at next (/MYPROJECT/node_modules/express/lib/router/index.js:176:38) 以下是我执行的苏格兰Twitter注册教程, FB signup工作正常。 供参考 – 我在twitter上多次检查过configuration,对我来说一切都好(callbackURL,key,secret等) 我检查了下面的url,但没有运气。 我的开发url就像 – http://192.XXX.XXX.XX:PORT_NUMBER 以下是我的app.js app.js 以下是我的passport.js passport.js […]

使用afterRemote钩子在远程方法的环回中发送响应

我正在尝试处理需要发送邮件的请求。 为了响应请求而不等待邮件发送,我正在发送一个afterRemote钩子邮件。 该方法似乎运行正常,并发送邮件,但由于某种原因,cb函数不执行,因此在客户端请求保持未答复。 问题是在console.log("Here");cb(null,{});的代码,你可以看到我有console.log("Here");cb(null,{}); 那里和第一个命令得到执行,但不是看起来第二个。 user.joinEntity = function(data, cb) { var loopbackCtx = user.app.loopback.getCurrentContext(); var userId=loopbackCtx.accessToken.userId; if(false){ cb( new Error("Cant join that Entity."),{}); }else{ user.find({where:{id:userId}},function(err,applicant_instance){ if (err) cb(err,{}); if(applicant_instance.length>0) user.find({where:{id:data.ownerId}},function(err,founder_instance){ if (err) cb(err,{}); if(founder_instance.length>0) user.app.models.EntityApplication.create({email:applicant_instance[0].email,userId:userId,EntityFounder:founder_instance[0].id,Entity:data.id,Status:"pending"},function(err,Entity_Application_Instance){ if (err) cb(err,{}); loopbackCtx.join_entity={applicant:applicant_instance[0].email,entity:data.name,to:founder_instance[0].email}; console.log("Here"); cb(null,{}); }); }); }) } } user.afterRemote('joinEntity',function(){ var loopbackCtx = user.app.loopback.getCurrentContext(); user.app.models.Email.send({ to: loopbackCtx.join_entity.to, from: […]

如何上传和发布文件到节点快递服务器

我目前有一个传统的HTML电子邮件表格发送一个文件,用户可以上传发布的请求。 我希望能够在电子邮件发送之后刷新成功消息,为此,我需要使用ajax或使用快递发送请求 – 而不是依靠传统的html表单提交。 我如何发送一个文件(不是文件pathstring)到服务器? 目前我正在分配input元素一个ID和抓取它的值。 但是这会抓取到文件的文件path的string,并不会发送实际的文件。 客户 <form enctype="multipart/form-data"> <input type="text" name="name" class="form-control" id="name"> <!–code below uploads file –> <input type="file" style="visibility:hidden; width: 1px;" id='${multipartFilePath}' class="res" name='userFile' onchange="$(this).parent().find('span').html($(this).val().replace('C:\\fakepath\\', ''))" /> <!– Chrome security returns 'C:\fakepath\' –> <input class="btn btn-default btn-file" type="button" value="Attach File" onclick="$(this).parent().find('input[type=file]').click();"/> </form> <button type="submit" class="btn btn-xl sub">Send Message</button> <script type="text/javascript"> $(".sub").click(function() […]

passportjs无法validation快速会话

我正在使用passportjs来validation我的快速应用程序。 我所做的与教程代码非常相似,但validation会话总是让我烦恼。 在我的主要工作stream程中,我使用本地策略validation用户 passport.authenticate('local', function (err, user, info) { if (err) { req.flash('error', { msg: err.message }); return res.redirect('back'); } if (!user) { // punish abuser… }) .catch( function (err) { req.flash('error', { msg: err.message }); return res.redirect('back'); }); } else { // Log user in debug('Info: ' + 'Logging in'.green.bold); req.logIn(user, function (err) { […]

用户是否可以添加/更改“请求”对象的属性(并导致安全漏洞)?

我对Node.js很陌生,写了一些类似的代码 request.validToken = true; 一旦我确认请求中的令牌有效。 如果validToken已经是真的,那么我会缩短检查时间。 但是我想知道的是,请求是否可以被攻击者编辑,使这个字段在原始请求中存在,因此允许他们绕过安全检查? 如果是的话,最好的做法是什么?