我用这个方法构建了一个简单的确认对话服务(Angular 2):
confirm(body?: string, title?: string): Subject<void> {
this.confirmation = new Subject<void>();
// ... show dialog here... "are you sure?"
return this.confirmation;
}
_onYesClicked() {
// ... closing the dialog
this.confirmation.next();
this.confirmation.complete();
}
_onNoClicked() {
// ... closing the dialog
this.confirmation.complete();
}
Run Code Online (Sandbox Code Playgroud)
用法:
confirmationService.confirm().subscribe(() => alert("CONFIRMED"));
Run Code Online (Sandbox Code Playgroud)
如果有人使用该服务,他会返回一个Subject(这是一个Observable),并且可以"订阅()".点击"是"时调用订阅,因此确认给出了...
这是正确的方法吗?更重要的是...将致电
this.confirmation.complete();
Run Code Online (Sandbox Code Playgroud)
取消订阅订阅的侦听器,从而防止任何延迟引用(内存泄漏)?
我不确定我是否理解刷新令牌的概念。我知道他们在做什么 - 将它们存储在某个地方,每当访问令牌过期时,就为他们获取一个新的访问令牌。
不泄露这个刷新令牌显然非常重要,否则第三方可以获得新的访问令牌。因此,它需要保持额外的安全。
我的问题是:为什么不让长期访问令牌更加安全?安全性的区别在哪里?
以下是 auth0.com 对这一事实的描述,例如:
好处:泄漏访问令牌的访问窗口更短(这些访问令牌很快过期,减少泄漏令牌允许访问受保护资源的机会)”
这对我来说没有任何意义。所以访问令牌很快过期,因此如果它被泄露,它“还不错”。
另一方面,如果刷新令牌泄漏,则非常糟糕。那么为什么不尝试让访问令牌与刷新令牌一样安全,并获得完全相同的结果,但要管理的令牌少了一个?
我正在使用 Angular 2。主项目文件夹包含“./src/app”,其中大部分编辑工作发生。
总是向下导航到这个文件夹有点麻烦(在折叠文件夹结构之后,这种情况经常发生。)。
有没有办法“作用于此”(就像在 Visual Studio 2012+ 解决方案资源管理器中一样)?
抱歉,这似乎是一个愚蠢的问题……但这实际上是预期的行为吗?
我将数据存储在某个元素上:
$('#source-list li.active').data('relation-text', textEditor.value());
Run Code Online (Sandbox Code Playgroud)
后来元素从一个列表移动到另一个列表:
$('#source-list li.active').remove().appendTo('#target-list')
Run Code Online (Sandbox Code Playgroud)
就在 'remove()' 之前,'data()' 返回预期值。remove() 之后,数据就没了。
我会知道如何解决这个问题......但对我来说似乎很奇怪 - 这是预期的行为吗?