小编Wil*_*han的帖子

如何为IdentityServer4配置登录UI?

我在IdentityServer4中找到的示例使用MVC进行登录UI.当OpenIdConnect隐式客户端命中'authorization_endpoint'(例如' http:// localhost:5000/connect/authorize ')时,它会被重定向到AccountController登录操作.如何将IdentityServer4配置为使用不同的控制器或UI作为登录页面?

.net-core identityserver4

15
推荐指数
1
解决办法
4835
查看次数

与Promise.then()相当的任务是什么?

使用Promise(s)向TypeScript添加async/await可以在语法上非常接近Task.

例:

承诺(TS)

public aync myAsyncFun(): Promise<T> {
    let value: T = await ...
    return value;
}
Run Code Online (Sandbox Code Playgroud)

任务(C#)

public aync Task<T> MyAsyncFun() {
    T value = await ...
    return value;
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否相反,有一个等同于.then()的任务.

例:

承诺(TS)

Promise<T> promise = ...
promise.then((result: T) => ...do something...);
Run Code Online (Sandbox Code Playgroud)

.net c# async-await typescript

14
推荐指数
1
解决办法
7486
查看次数

如何使用角度示意图覆盖文件?

我想写一个Rule每次都覆盖一个文件.在下面并MergeStrategy设置为Overwrite:

collection.json

{
  "$schema": "../node_modules/@angular-devkit/schematics/collection-schema.json",
  "schematics": {
    "function": {
      "aliases": [ "fn" ],
      "factory": "./function",
      "description": "Create a function.",
      "schema": "./function/schema.json"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

function/index.ts

export default function(options: FunctionOptions): Rule {
  options.path = options.path ? normalize(options.path) : options.path;
  const sourceDir = options.sourceDir;
  if (!sourceDir) {
    throw new SchematicsException(`sourceDir option is required.`);
  }

  const templateSource: Source = apply(
    url('./files'),
    [
      template({
        ...strings,
        ...options,
      }),
      move(sourceDir),
    ]
  )

  return mergeWith(templateSource, MergeStrategy.Overwrite);

}
Run Code Online (Sandbox Code Playgroud)

files/__path__/__name@dasherize__.ts

export function <%= …
Run Code Online (Sandbox Code Playgroud)

angular-cli angular angular-schematics

14
推荐指数
2
解决办法
3058
查看次数

视频流在某些浏览器/设备组合上横向移动

我打电话getUserMedia()来获取视频流并简单地将其设置streamsrcObject视频元素.

特别是在2个不同Windows平板电脑上的Chrome上,在纵向模式下,视频是侧面的.

我在流或视频轨道对象中找不到任何方向信息,宽度和高度轨道信息与视频元素匹配,并且与宽高比轨道信息一致.

您可以使用https://camera.stackblitz.io复制

如何从流中获取方向信息或以逻辑方式旋转视频?

编辑:

我不想要设备或屏幕的方向,而是视频流的方向.也许"轮换"是正确的措辞.换句话说,如何在没有人看的情况下知道何时旋转视频?

编辑2:

"纵向模式下的Windows平板电脑上的Chrome"正是我所经历的,我不知道问题是否与此相关或问题与每个Windows平板电脑有关,但主要问题是如何判断视频是侧向还是旋转?

javascript windows html5 mediastream

13
推荐指数
1
解决办法
667
查看次数

serviceWorker删除Origin请求标头

我有一个有角度的应用程序,只要我按照以下步骤添加serviceWorker:

https://github.com/angular/angular-cli/blob/master/docs/documentation/build.md#service-worker https://angular.io/guide/service-worker-getting-started

...我的API请求不再有Origin请求标头,这似乎导致我的API服务器不返回Access-Control-Allow-Origin响应标头,导致浏览器错误:

请求的资源上不存在"Access-Control-Allow-Origin"标头.

只需删除serviceWorker并取消注册即可将该行为恢复正常.

如何在继续使用我的restful API的同时实现serviceWorker?

所有的要求都受到了影响,但有些是"引擎盖下"的oidc-client; 所有其他人看起来像:

public getBook(bookId: number): Observable<Book> {
  const request = new HttpRequest(
    'get',
    `https://some-server.asurewebsites.net/api/book/${bookId}`,
    {
      reportProgress: true,
      responseType: 'json'
    }
  );
  return this.httpClient.request<any>(request).do(event => {
    this.progressService.processEvent(event);
  }).filter(event => event instanceof HttpResponse)
  .map((response: HttpResponse<any>) => deserializeBook(response.body)).catch(error => {
    if (error instanceof HttpErrorResponse) {
      if (error.status === 404) {
        return Observable.of(null);
      }
    }
    return Observable.throw(error);
  });
}
// note: other constraints require listening to progress from per-request level …
Run Code Online (Sandbox Code Playgroud)

cors service-worker angular-cli angular angular-service-worker

11
推荐指数
1
解决办法
1020
查看次数

ResizeObserver 一 vs 多性能

ResizeObserver有一个observe()方法和一个unobserve ()方法。这似乎鼓励拥有一个ResizeObserver实例,并根据需要使用回调中的逻辑来观察和取消观察不同的元素来处理每个实体。与实例化多个ResizeObserver来观察不同元素或元素组相比,这样做是否会对性能产生任何影响?

javascript

11
推荐指数
1
解决办法
4670
查看次数

如何订购angular-cli脚本

angular-cli.json有以下几点:

...
"scripts": [
    ... 
    "../node_modules/jquery-ui/ui/widget.js",
    "../node_modules/jquery-ui/ui/widgets/datepicker.js",
    "../node_modules/jquery-ui-timepicker-addon/dist/jquery-ui-timepicker-addon.js",
    ...
],
...
Run Code Online (Sandbox Code Playgroud)

https://github.com/trentrichardson/jQuery-Timepicker-Addon/blob/master/dist/jquery-ui-timepicker-addon.js#L15我得到了Uncaught TypeError: Cannot read property 'timepicker' of undefined.我发现这是因为webpack按以下顺序加载脚本:

jquery-ui-timepicker-addon.js
widget.js
datepicker.js

widget.js以前需要加载jquery-ui-timepicker-addon.js.为什么webpack的加载顺序与配置的顺序不同,如何确定文件的加载顺序?

webpack angular-cli angular

8
推荐指数
1
解决办法
2108
查看次数

类型安全胡子模板

是否有解决方案可以执行以下操作?:

我-template.mustache

Hello {{name}}!
Run Code Online (Sandbox Code Playgroud)

index.ts

import { readFileSync, writeFileSync } from 'fs';
import * as Mustache from 'mustache';

export interface Person {
    name: string;
}

const hash: Person = {
    name: 'Jon'
};

const template = readFileSync('my-template.mustache', 'utf-8');

// somehow let the IDE know the hash type
const result = Mustache.render(template, hash);

writeFileSync('my-template.html', result, 'utf-8');
Run Code Online (Sandbox Code Playgroud)

如果你做了:

我-template.mustache

Hello {{name}}, {{age}} <!-- red squiggles under age -->
Run Code Online (Sandbox Code Playgroud)

所以age不是Person类型的属性,哈希类型是Person,所以你得到红色的波浪线age.最好是在Visual Studio Code中工作的机制.

更新:
要明确Hello …

templates mustache typescript visual-studio-code

8
推荐指数
1
解决办法
1465
查看次数

更改事件和文件属性未使用照片库选择的特定文件更新

例如:https://stackblitz.com/edit/plain-video-input

在iOS(v11.4)Safari和Chrome上files,选择文件时不会更新文件输入的"更改"事件和属性:

https://afblob.blob.core.windows.net/test/IMG_6599.mp4

与"照片库",但将与文件更新:

https://afblob.blob.core.windows.net/test/mov_bbb.mp4

和别的.但是,使用"浏览"选择文件时,所有文件都有效.当我使用"照片库"并选择无法更新输入但没有错误消息的文件时,我注意到闪烁的进度条显示"压缩视频......",好像操作系统无法压缩视频而不是给浏览器一个文件.我试过一个简单的<input type="file" />没有JavaScript,上面的例子中的JavaScript只是为了演示.

问题为什么iPhone的Safari触发器不会改变输入类型=文件的事件?javascript文件输入onchange不工作[仅限ios safari]没有帮助.input元素直接添加到dom,用户直接单击.

该文件怎么导致问题?这是iOS /照片库的错误吗?

注意:这很重要,因为对我们的用户来说,它具有与成功选择视频相同的行为,但我们的应用程序没有响应,因为它等待"更改"事件,即使我们解决files了输入的属性没有反映.

html javascript mobile-safari ios

6
推荐指数
0
解决办法
190
查看次数

OIDC和PWA(添加到主屏幕)

更新:基本上与Standalone PWA相同的问题会破坏登录但在iOS上.

如果您将Web应用程序添加到主屏幕,则Android上的Chrome会在浏览器中与同一域共享本地存储.您可以通过访问https://wilfrem.github.io/add_to_homescreen_test/进行测试,然后添加到主屏幕,并在主屏幕上打开时看到您具有相同的ID.(我做了Nexus 5x)

如果您在iOS Safari中执行相同操作,则会获得新ID.(我做了iPod iOS 12.1.1)

oidc-client-js库在本地存储中设置会话引用,然后在Web应用程序的signin回调中调用它.因此,如果您尝试从iOS主屏幕上打开的Web应用程序登录,它会在Safari中打开OP(oidc提供程序),然后重定向回Web应用程序的URL,但在Safari中不是从主屏幕Web应用程序打开的,因此,您可以获得不同的本地存储空间:

存储中找不到匹配状态

如果本地存储不在同一个域中共享,您应该如何使用oidc与从主屏幕Web应用程序打开的iOS?或者,当重定向回Web应用程序时,如何让iOS重新打开正确的窗口(从主屏幕打开的窗口)?或者,当我首先导航到OP(oidc提供商)时,如何让iOS永远不会离开全屏应用?

编辑:

这是解释问题的叙述.

  • 打开 my.app.com
  • 添加到主屏幕
  • 从主屏幕打开应用程序
  • 单击登录按钮
  • 登录按钮电话 UserManager.signinRedirect()
  • UserManager.signinRedirect() 电话 OidcClient.createSigninRequest()
  • OidcClient.createSigninRequest()在本地存储中存储登录状态并导航以在Androidmy.op.com 查看 打开Chrome选项卡,并在iOS上打开Safarimy.op.commy.op.com
  • 在操作上完成登录过程
  • op重定向到my.app.com/signin-callback.html 这里是问题所在

my.app.com/signin-callback.html主屏幕上打开的应用程序中打开Android ,在iOS上它保留在Safari中.所以你得到:

存储中找不到匹配状态

我没有遇到错误,根据发生的错误是完全可以预料到的,我只是不知道如何让Safari以一种可以与库一起工作的方式运行.

如果它相关这是我的manifest.json

{
  "name": "omitted",
  "short_name": "omitted",
  "theme_color": "#omitted",
  "background_color": "#omitted",
  "display": "standalone",
  "scope": "/",
  "start_url": "/",
  "icons": [
    {
      "src": "omitted",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "omitted",
      "sizes": "512x512", …
Run Code Online (Sandbox Code Playgroud)

iphone-standalone-web-app openid-connect progressive-web-apps oidc-client-js

6
推荐指数
1
解决办法
475
查看次数