这是mentionned在ECMAScript标准在这里说:
...这些功能不被视为核心ECMAScript语言的一部分.编写新的ECMAScript代码时,程序员不应使用或假设存在这些特性和行为.除非实现是Web浏览器的一部分,或者需要运行与Web浏览器相同的旧ECMAScript代码,否则不鼓励ECMAScript实现实现这些功能.
MDN上还有一个红色警告:String.prototype.substr()MDN doc
有谁知道为什么(ECMAScript标准说)程序员不应该使用或假设存在String.prototype.substr?
语境
我有一个朋友,他的名字叫鲍勃。
Bob 有一个服务器,其中的应用程序正在运行并且只能在本地访问。为了从外部世界访问此应用程序,Bob使用 nginx 和模块auth_basic安装并配置了反向代理。
每个请求都经过反向代理的身份验证过程。两种情况:
直到这里一切都正常。这就像基本身份验证规范所期望的那样。
问题
Bob 不喜欢浏览器的默认对话框,并且想要一个带有表单的漂亮 html 页面。他将 nginx 服务器配置为拥有自己的 html 表单。
问题在于,默认情况下,表单的 HTML 提交过程不会发送Authorization标头参数。Bob 需要使用XMLHttpRequest。他实现了它,并在凭据良好时从服务器收到良好的200 HTTP 响应。
与默认表单行为不同,使用 XMLHttpRequest 时,浏览器不会在成功时自动缓存凭据。因此每个子请求都会再次显示登录表单:'(
Bob 无法更改本地应用程序的前端代码以自行发送每个请求中的凭据(与 SPA 一样)。事实上,他无权访问该应用程序。他只能访问 nginx conf 和他自己的 html 登录表单。所以存储在这里是没有用的。
问题
bob 是否可以在收到 XHR 响应后让浏览器缓存凭据?
(目标是即使使用 XMLHttpRequest 也能表现得像默认行为)
编辑 …
我想在 JWT 中使用基于令牌的身份验证(如果可能,已签名和加密)。我在服务器端使用 NodeJS。
我正在尝试使用这个 node-jose 模块:https : //github.com/cisco/node-jose
我对生成/存储密钥和加密算法了解不多。即使文档看起来很清楚,我也不明白部分密钥和密钥存储(直到签名部分):https : //github.com/cisco/node-jose#keys-and-key-stores
我想这取决于我需要什么,但由于我的加密水平,我不知道我需要什么......
然后在签名部分,当我需要使用密钥时,我不太了解这部分https://github.com/cisco/node-jose#keys-used-for-signing-and-verifying
我可以解释一下这些问题吗?
先感谢您。
在Angular2中,是否可以具有可以应用于多个组件的相同防护(例如CanActivate或CanDeactivate)?
这是一个警卫MyComponent1:
@Injectable()
export class MyGuard implements CanDeactivate<MyComponent1> {
canDeactivate(component: MyComponent1): Promise<boolean> {
// my code here
}
}
Run Code Online (Sandbox Code Playgroud)
我想要完全相同的后卫MyComponent2,MyComponent3等等。
我该如何实施呢?我需要按组件声明新的防护类,还是可以重用我的类MyGuard?