我在IdentityServer4中找到的示例使用MVC进行登录UI.当OpenIdConnect隐式客户端命中'authorization_endpoint'(例如' http:// localhost:5000/connect/authorize ')时,它会被重定向到AccountController登录操作.如何将IdentityServer4配置为使用不同的控制器或UI作为登录页面?
使用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) 我想写一个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) 我打电话getUserMedia()来获取视频流并简单地将其设置stream为srcObject视频元素.
特别是在2个不同Windows平板电脑上的Chrome上,在纵向模式下,视频是侧面的.
我在流或视频轨道对象中找不到任何方向信息,宽度和高度轨道信息与视频元素匹配,并且与宽高比轨道信息一致.
您可以使用https://camera.stackblitz.io复制
如何从流中获取方向信息或以逻辑方式旋转视频?
编辑:
我不想要设备或屏幕的方向,而是视频流的方向.也许"轮换"是正确的措辞.换句话说,如何在没有人看的情况下知道何时旋转视频?
编辑2:
"纵向模式下的Windows平板电脑上的Chrome"正是我所经历的,我不知道问题是否与此相关或问题与每个Windows平板电脑有关,但主要问题是如何判断视频是侧向还是旋转?
我有一个有角度的应用程序,只要我按照以下步骤添加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
ResizeObserver有一个observe()方法和一个unobserve ()方法。这似乎鼓励拥有一个ResizeObserver实例,并根据需要使用回调中的逻辑来观察和取消观察不同的元素来处理每个实体。与实例化多个ResizeObserver来观察不同元素或元素组相比,这样做是否会对性能产生任何影响?
我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的加载顺序与配置的顺序不同,如何确定文件的加载顺序?
是否有解决方案可以执行以下操作?:
我-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 …
例如: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了输入的属性没有反映.
更新:基本上与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.comUserManager.signinRedirect()UserManager.signinRedirect() 电话 OidcClient.createSigninRequest()OidcClient.createSigninRequest()在本地存储中存储登录状态并导航以在Android上my.op.com 查看 打开Chrome选项卡,并在iOS上打开Safarimy.op.commy.op.commy.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
angular ×3
angular-cli ×3
javascript ×3
typescript ×2
.net ×1
.net-core ×1
async-await ×1
c# ×1
cors ×1
html ×1
html5 ×1
ios ×1
mediastream ×1
mustache ×1
templates ×1
webpack ×1
windows ×1