我们一直在编写一些代码来测试我们的端点和身份验证过程。我们使用 Cognito 进行身份验证,我们的端点需要具有隐式授权流程的访问令牌。
阅读 Amazon 的文档后,我们成功地使用以下代码获取了 openid 令牌:
AmazonCognitoIdentity identityClient = new AmazonCognitoIdentityClient(
new BasicAWSCredentials("XXXXXXXXXXXXXXXXXXXXX",
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
);
identityClient.setRegion(Region.getRegion(Regions.EU_WEST_1));
GetOpenIdTokenForDeveloperIdentityRequest request =
new GetOpenIdTokenForDeveloperIdentityRequest();
request.setIdentityPoolId("eu-west-1:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
Map<String,String> logins = new HashMap<>();
logins.put("acceptance-tests", "acceptance-tests");
request.setLogins(logins);
GetOpenIdTokenForDeveloperIdentityResult response =
identityClient.getOpenIdTokenForDeveloperIdentity(request);
String identityId = response.getIdentityId();
String token = response.getToken();
Run Code Online (Sandbox Code Playgroud)
我们只是不知道如何将 openid 令牌交换为访问令牌来调用我们的端点。
也就是说,我们甚至不确定是否真的需要先获取 openid 令牌才能获取访问令牌。
在我们尝试使用下面的代码来获取访问令牌之前,但是我们的端点不接受我们获得的令牌。我们获得的令牌与我们通过 cognito UI 登录时获得的令牌不同。
final String clientId = "XXXXXXXXXXXXXXXXXXXXXXXXX";
final String region = "eu-west-1";
final String username = "USERNAME";
final String password = "PASSWORD";
AWSCognitoIdentityProvider cognitoClient = AWSCognitoIdentityProviderClientBuilder.standard()
.withRegion(region)
.build(); …Run Code Online (Sandbox Code Playgroud) 我已经使用paperjs了一年,没有任何问题.在Chrome更新后(Version 55.0.2883.87 m),我在2个月内未触及的一些生产代码开始失败error: item.setRampPoint is not a function:
paper-full.js:13213 Uncaught TypeError: item.setRampPoint is not a function
at offset (paper-full.js:13213)
at Object.<anonymous> (paper-full.js:13263)
at Object.forIn (paper-full.js:46)
at Function.each (paper-full.js:133)
at applyAttributes (paper-full.js:13260)
at importGroup (paper-full.js:12944)
at importSVG (paper-full.js:13324)
at Project.importSVG (paper-full.js:13356)
at drawAddLaneButtons (tlc.js:267)
at Path.window.drawTlcElements (tlc.js:62)
Run Code Online (Sandbox Code Playgroud)
如果我setRamPoint在paperjs代码中注释掉它,它会再次开始工作.
当我尝试将SVG加载到页面时会发生这种情况,但是,正如我之前所说,它在很长一段时间内都运行正常.
我使用的是版本0.9.25 paperjs.
有任何想法吗?
我正在使用 nestjs 并且我试图创建一个自定义装饰器:
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { User } from './user.entity';
export const GetUser = createParamDecorator(
(data, ctx: ExecutionContext): User => {
const req = ctx.switchToHttp().getRequest();
return req.user;
},
);
Run Code Online (Sandbox Code Playgroud)
装饰器在这里使用:
@Post('/test')
@UseGuards(AuthGuard())
test(@GetUser() user: User) {
console.log(user);
}
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
[Nest] 15053 - 26/03/2020, 13:28:19 [ExceptionsHandler] ctx.switchToHttp is not a function +61625ms
TypeError: ctx.switchToHttp is not a function
at /Users/nelson.larios/Documents/nestjs/nestjs-task-management/dist/auth/get-user.decorator.js:5:21
at /Users/nelson.larios/Documents/nestjs/nestjs-task-management/node_modules/@nestjs/core/router/router-execution-context.js:115:35
at resolveParamValue (/Users/nelson.larios/Documents/nestjs/nestjs-task-management/node_modules/@nestjs/core/router/router-execution-context.js:143:31)
at Array.map (<anonymous>)
at pipesFn (/Users/nelson.larios/Documents/nestjs/nestjs-task-management/node_modules/@nestjs/core/router/router-execution-context.js:148:45)
at /Users/nelson.larios/Documents/nestjs/nestjs-task-management/node_modules/@nestjs/core/router/router-execution-context.js:36:36
at InterceptorsConsumer.intercept …Run Code Online (Sandbox Code Playgroud)