我正在使用 Passport 处理 Express 应用程序的身份验证。这将用户设置为 Express 响应。我正在使用 TypeScript,因此在路由定义中将请求类型设置为 Request 会出错,因为 Express Request 中不存在用户对象。通过声明合并或扩展接口来扩展请求有很多问题,但这些会导致另一个错误。我的文件看起来像这样:
import { Router, Request, Response } from 'express'
import { User as CustomUser } from './user'
interface IRequest extends Request {
user: CustomUser
}
const router: Router = Router()
router.get('/', requiresLogin, (req: IRequest, res: Response) => {
console.log(req.user)
res.sendStatus(204)
})
Run Code Online (Sandbox Code Playgroud)
但现在我在快速回调中得到以下 TypeScript:
Argument of type '(req: IRequest, res: Response) => void' is not assignable to parameter of type 'RequestHandlerParams'. Type '(req: IRequest, res: …Run Code Online (Sandbox Code Playgroud) 我使用$window.open(url, ''). 目前他们被定向到登录页面,但现在需要单点登录,以便用户在登录到我的应用程序时可以访问外部站点。外部站点要求我在重定向用户时使用 Bearer 架构在授权标头中发送 JavaScript Web 令牌。
将用户发送到另一个站点时,如何在 Angular 中设置授权标头。我只在与 API ( $http.get())通信的上下文中使用过标头,而不是将用户发送到其他地方。我认为$window.open没有任何方法可以做到这一点,所以我可能需要使用其他方法。
虽然这个问题很相似,但答案描述了将令牌作为 URL 中的 get 参数发送。不使用授权标头。如何将身份验证标头添加到 $window.open
如何在BASH中打印出一个数组,并在每个值和最后一个换行符之间使用字段分隔符.
我用单个printf得到的最接近的是printf '%s|' "${arr1[@]}"| 是字段分隔符.这个问题是最后没有换行符.\n我尝试放入其中的任何组合要么在每个条目上都有一个换行符,要么根本没有!
有没有办法在一条线上做或我需要使用 printf '%s|' "${arr1[@]}";printf "\n"
谢谢,
杰兰特
我按照教程创建了一个JavaScript秒表,并尝试将其扩展为使用多个秒表(一个类的多个实例).我遇到的问题是当我试图在时钟滴答作响时显示当前值时我需要对类实例进行硬编码,因为使用"this"不起作用(在我使用console.log的行上).我已经将代码减少到最低限度以尝试理解这方面,并粘贴了我在下面的内容:
function Timer(){
var time1 = null;
var time2 = null;
var timeLoop = null;
function getTime(){
var day = new Date();
return day.getTime();
}
this.start = function(){
time1 = getTime();
timeLoop = setInterval(function(){
time2 = getTime();
console.log(_Timer.duration());
//console.log(this.duration());
},500);
}
this.duration = function(){
return (time1 - time2) / 1000;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为下面的链接描述了我的问题,但我不明白它在这里应用它.问题是由于所有者是this.start而不仅仅是这个,我如何修改代码以使其适用于任何Timer实例?
http://www.quirksmode.org/js/this.html
我已经包含了硬编码值行和不起作用的"this"行.
谢谢,
杰兰特
在 Flask Web 框架中使用方括号或点符号有什么区别?两者似乎都有效,例如:
在Python脚本中我可以设置session['username'] = 'Geraint'. {{ session['username'] }}然后我可以使用或访问模板{{ session.username }}
两者有什么区别?该文档似乎更喜欢点符号,所以应该在所有情况下使用它吗?
如何设置使用pdfKit创建的PDF文件的文件名,以便通过HTTP发送(而不是本地保存).以下内容未设置文件名,decs仅显示如何设置文件名以进行本地保存.
var doc = new PDFDocument({bufferPages: true});
doc.info.Title = 'Case ' + req.params.id + ' overview';
// Some more content here
doc.pipe(res);
Run Code Online (Sandbox Code Playgroud)
我也试过设置标题,但似乎没有帮助.
res.setHeader('Content-disposition', 'attachment; filename=testFile.pdf');
Run Code Online (Sandbox Code Playgroud) 什么是仅使用字符串导入RxJS函数和方法并使用命名导入导入之间的区别.例如:
使用'add'字符串:
import 'rxjs/add/operator/map'
Run Code Online (Sandbox Code Playgroud)
使用命名导入
import { merge } from 'rxjs/observable/merge'
Run Code Online (Sandbox Code Playgroud)
单个方法只能以一种方式工作,但我无法确定如何确定需要导入特定方法的方式.有没有办法确定使用哪种方法,有什么区别?
如何在控制器中提供数据?我创建了一个非常简单的Plunk,它应该在模态中显示$ scope的数据.然后我需要更新数据,并且只在点击"确定"时更新$ scope.单击"取消"将放弃更改.
但在我开始这一步之前,我需要让范围可用于模态.大多数示例使用两个控制器.我是否需要另一个控制器,如下例所示:将数据传递给Angular中的Twitter Bootstrap模式?在我的控制器中,我有以下内容:
$scope.open = function(){
var modalInstance = $uibModal.open({
templateUrl: 'modal.html',
controller: 'ModalInstanceController',
resolve: {
users: function() {
return $scope.users;
}
}
});
};
Run Code Online (Sandbox Code Playgroud)
如何在模板中显示用户?插件在这里:http://plnkr.co/edit/FuXjSwtljQtFYOtFRV18?p = preview
我试图从一个子例程返回一个Promise,该子例程包含从HTTP请求获得的一些数据到Web服务器。但是我无法要求then结果。缩小范围后,似乎不可能将从get_p中返回的承诺分配给变量,然后将其用作承诺。
这是一个例子。我本以为两个请求完全相同,但是只有第二个请求在then块中运行代码。
有人可以解释一下两者之间的区别是什么,如果我想在子程序then外链接更多方法,我应该如何从子程序返回promise ?
#!/usr/bin/perl -w
use strict;
use warnings;
use utf8;
use 5.024;
use Data::Dumper;
use Mojo::IOLoop;
use Mojo::UserAgent;
my $promise = Mojo::UserAgent->new->get_p('http://example.com');
$promise->then(sub {
my $tx = shift;
warn 'Using variable';
warn $tx->result->body;
})->wait;
Mojo::UserAgent->new->get_p('http://example.com')
->then(sub {
my $tx = shift;
warn 'Not using variable';
warn $tx->result->body;
})->wait;
Run Code Online (Sandbox Code Playgroud) 我正在使用一个函数来测试一个Angular 4组件,该函数发出一个HTTP请求(返回一个observable),然后在observables subscribe方法中调用另一个函数.我想测试正确调用subscribe中的函数.该组件如下所示:
logIn(): void {
this.loginService.logIn(user)
.subscribe(() => {
this.router.navigateByUrl('/')
})
}
Run Code Online (Sandbox Code Playgroud)
我在组件规范中嘲笑了这项服务:
loginServiceStub = {
logIn(user: User) {
return Observable.of(true)
},
}
Run Code Online (Sandbox Code Playgroud)
我已经将一个间谍附加到路由器和登录服务,以了解它们是否已被调用:
const logInSpy = spyOn(loginService, 'logIn')
const navigateByUrlSpy = spyOn(router, 'navigateByUrl')
Run Code Online (Sandbox Code Playgroud)
调用组件登录方法时,正在调用logInSpy,但没有调用navigateByUrlSpy,并且没有运行subscribe方法.我应该如何设置模拟logIn以使其正常工作?
angularjs ×2
express ×2
rxjs ×2
typescript ×2
angular ×1
bash ×1
class ×1
console.log ×1
flask ×1
http-headers ×1
jasmine ×1
javascript ×1
jinja2 ×1
methods ×1
modal-dialog ×1
mojolicious ×1
node-pdfkit ×1
node.js ×1
passport.js ×1
perl ×1
printf ×1
promise ×1
python ×1
this ×1
unit-testing ×1