小编Ole*_*Ole的帖子

是否可以在运行时传递 Typescript 装饰器对象值?

我有一个用 @MinDate 约束装饰的类,如下所示:

export default class Order {
   purchaseDate: Date;
   @MinDate(this.purchaseDate)
   receiptDate: Date;
}
Run Code Online (Sandbox Code Playgroud)

当尝试验证其实例Order是否有效时,会出现验证错误。我的问题是是否可以/有效地将其this.purchaseDate作为参数传递给@MinDate()装饰器。

换句话说,打字稿装饰器可以从对象接收运行时值,还是这些值必须在编译时可用?例如:

@MinDate(new Date(12/22/2017));  //This should work?
@MinDate(this.someDate) // This will never work?
Run Code Online (Sandbox Code Playgroud)

typescript ecmascript-6 typescript2.2 class-validator

5
推荐指数
1
解决办法
4737
查看次数

使用授权码授予而不使用cookie?

我已经阅读了几个月的内容,似乎整个事情都可以集中在我下面总结的内容上。我正在努力达到最理想的状态:

  • OAuth2
  • OpenID 连接
  • SPA/移动客户端
  • 智威汤逊

上述组件具有银行级安全质量的解决方案。所以这似乎是有道理的。

  • 使用授权代码授予而不使用服务器端会话和 cookie,因为此 OAuth 流比隐式流更安全。
  • 不要创建服务器端会话或 cookie(此外也许还记得我的 cookie 来识别客户端之前是否已通过身份验证)。这更有利于扩展和整体简单性。
  • 将 JWT / OpenID 连接令牌返回给客户端,以便客户端可以使用它来发出 API 请求并在客户端内做出授权决策。(我认为这就是 OAuth2 混合授权代码授予/隐式流程是什么?)。将 JWT / OpenID 连接令牌存储在客户端会话存储中。
  • 拥有短暂的 JWT 令牌,并提供刷新令牌,直到用户注销。客户端将自动接收刷新令牌,除非超时/客户端会话过期或用户注销。刷新令牌将由 SPA/移动应用程序正在与之通信的边缘服务器/OAuth 客户端获取并提供服务。
  • 注销(或超时)时,从浏览器会话存储中删除令牌。

这是否疯狂/听起来合理吗?它会跳过使令牌失效,但如果令牌的生命周期很短并且客户端可以获得刷新令牌,那么这样做似乎可以。我想使用 Spring-Boot / Spring Security 和 Angular 4/5 来实现这一点,我想知道我是否错过了任何明显的东西,或者也许有一种更简单的方法不会牺牲/降低安全性?

您还认为这会通过“银行”级安全标准检查吗?

oauth-2.0 jwt spring-security-oauth2 openid-connect angular

5
推荐指数
1
解决办法
3476
查看次数

如何使用 OpenID Connect WebFinger 端点?

阅读这里的描述,它说:

\n\n
\n

WebFinger \xe2\x80\x94 根据给定用户的电子邮件地址或其他一些信息启用 OpenID Connect 提供程序的动态发现。

\n
\n\n

有人可以举例说明它是如何工作的(描述有点抽象)吗?

\n

security http oauth-2.0 openid-connect

5
推荐指数
1
解决办法
3023
查看次数

了解Optional <T> .map()

查看使用Optional数据库调用首先加载可选项然后映射到Spring安全UserDetails实例的示例用法.代码如下所示:

Optional<User> user = userRepository.findByName(username);
user.orElseThrow(()-> new UsernameNotFoundException("Ahhh Shuckkkks!!!");
return user.map(CustomUserDetails::new).get();
Run Code Online (Sandbox Code Playgroud)

在最后一行中,该调用是相等的return new CustomUserDetails(user.get()).

也有人知道是否有更短的流动方式来编写上面的例子?

java java-8 spring-data-jpa

5
推荐指数
1
解决办法
116
查看次数

ts-node应该检查baseUrl tsconfig.json属性吗?

我正在使用ts-node而且tsconfig.json我已经使用过了"baseUrl": "./src".这样我可以在src不使用的情况下导入兄弟./.但是ts-node似乎没有使用该baseUrl属性来解析兄弟导入,所以我得到这样的错误:

    > tsmochanyc@1.0.0 test /home/ole/Junk/tsmochanyc
    > mocha -r ts-node/register src/**/*.spec.ts

    Error: Cannot find module 'hello'
        at Function.Module._resolveFilename (internal/modules/cjs/loader.js:548:15)
Run Code Online (Sandbox Code Playgroud)

好奇这是否是一个ts节点错误或我是否应该做一些不同的事情?

javascript typescript ts-node

5
推荐指数
1
解决办法
964
查看次数

在Stackblitz Angular项目中使用Object.values()

这个stackblitz项目中,我们可以使用Object.values()

我试图在这个Angular项目中使用它,它抛出:

类型“ ObjectConstructor”上不存在属性“值”。

我知道在一般的打字稿项目中,不得不说它是专门针对TSConfig中的ES2017环境的。Stackblitz中是否可以为此设置一些设置?

IIUC Angular应该Object.valuesCoreJS获得。

typescript angular stackblitz

5
推荐指数
1
解决办法
247
查看次数

使用 ng-container 与模板的好处?

在 angular 我们可以这样做:

template: `<ng-container #c></ng-container>`
Run Code Online (Sandbox Code Playgroud)

或者:

template: `<template #c></template>`
Run Code Online (Sandbox Code Playgroud)

创建一个在渲染模板时隐藏的视图容器。

使用ng-containerhtml 模板替代方案有区别吗?我猜 Angular 必须拥有自己的模板容器,例如ng-templateng-container因为使用原始html模板元素可能会破坏非基于浏览器的运行时,例如移动客户端等。

html javascript typescript angular

5
推荐指数
1
解决办法
3588
查看次数

使用 Node exec 时开玩笑打开句柄?

我有一个用于调用指挥官脚本的函数:

\n\n
    function cli(args, cwd) {\n    return new Promise(resolve => {\n        exec(\n        `node ${path.resolve("./index")} ${args.join(" ")}`,\n        { cwd },\n        (error, stdout, stderr) => {\n            resolve({\n            code: error && error.code ? error.code : 0,\n            error,\n            stdout,\n            stderr\n            });\n        }\n        );\n    });\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

在某些调用中,Jest 会记录以下内容:

\n\n
    Jest has detected the following 1 open handle potentially keeping Jest from exiting:\n\n    \xe2\x97\x8f  PROCESSWRAP\n\n        255 | function cli(args, cwd) {\n        256 |   return new Promise(resolve => {\n        > 257 |     exec(\n            |     ^\n        258 …
Run Code Online (Sandbox Code Playgroud)

javascript node.js jestjs

5
推荐指数
1
解决办法
465
查看次数

让 div 元素“认为”屏幕具有一定的宽度?

好奇是否有办法让元素认为视口具有一定的宽度?

这将用于测试响应式 CSS 实用程序。例如,这个CSS 组件是响应式的,但为了查看行为,用户必须缩小浏览器窗口。

如果有一种方法可以“欺骗”标记测试元素,使其认为视口具有一定的宽度,则无需手动拖动浏览器窗口。

尽管我怀疑它是否已实现,但一种可能性是浏览器开发人员工具公开一个 API,该 API 允许我们选择并通知浏览器某些元素应考虑浏览器以特定视口大小呈现......

离开

在摆弄这个测试时,我意外地发现有一种方法可以在没有开发人员工具的情况下触发媒体查询,那就是使用 ctrl + 缩放视口。这将触发媒体查询,尽管显然没有达到我正在寻找的声明精度。

html css firefox google-chrome media-queries

5
推荐指数
1
解决办法
1181
查看次数

为自定义打字稿错误实例实现 instanceof 检查?

Typescript 有这个instanceof 检查自定义错误问题,但不清楚我们需要做什么才能开始instanceof工作。例如,对于这个异常,我们将如何instanceof工作:

    /**
     * @param message The error message
     * @param value The value that violates the constraint
     * @param field The name of the field
     * @param type The expected type for the field
     * @param constraint The name of the constraint violated
     * @param code The application or module code for the error
     */
    export class IsError extends Error {
      constructor(
        public message:string,
        public value: any, 
        public field?:string, 
        public type?: string, …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript angular

5
推荐指数
2
解决办法
6759
查看次数