小编ElJ*_*ste的帖子

为什么String.prototype.substr()似乎已被弃用?

这是mentionned在ECMAScript标准在这里说:

...这些功能不被视为核心ECMAScript语言的一部分.编写新的ECMAScript代码时,程序员不应使用或假设存在这些特性和行为.除非实现是Web浏览器的一部分,或者需要运行与Web浏览器相同的旧ECMAScript代码,否则不鼓励ECMAScript实现实现这些功能.

MDN上还有一个红色警告:String.prototype.substr()MDN doc

有谁知道为什么(ECMAScript标准说)程序员不应该使用或假设存在String.prototype.substr

javascript standards ecma

7
推荐指数
3
解决办法
455
查看次数

XHR 之后如何在浏览器缓存中存储基本身份验证凭据

语境

我有一个朋友,他的名字叫鲍勃。

Bob 有一个服务器,其中的应用程序正在运行并且只能在本地访问。为了从外部世界访问此应用程序,Bob使用 nginx 和模块auth_basic安装并配置了反向代理

每个请求都经过反向代理的身份验证过程。两种情况:

  1. 如果HTTP GET 请求包含有效的 HTTP 标头参数Authorization: Basic base64credentials,则反向代理将访问本地应用程序并相应地响应。每个子请求都不需要新的身份验证,因为浏览器会缓存凭据并在每个请求中自动发送它们,直到我们关闭浏览器。
  2. 如果HTTP GET 请求不包含有效的 HTTP 标头参数,反向代理将直接使用 HTTP 标头WWW-Authenticate: Basic Realm="User Visible Realm"进行响应。然后浏览器会自动显示一个对话框以输入凭据。

直到这里一切都正常。这就像基本身份验证规范所期望的那样。

问题

Bob 不喜欢浏览器的默认对话框,并且想要一个带有表单的漂亮 html 页面。他将 nginx 服务器配置为拥有自己的 html 表单。

问题在于,默认情况下,表单的 HTML 提交过程不会发送Authorization标头参数。Bob 需要使用XMLHttpRequest。他实现了它,并在凭据良好时从服务器收到良好的200 HTTP 响应。

与默认表单行为不同,使用 XMLHttpRequest 时,浏览器不会在成功时自动缓存凭据。因此每个子请求都会再次显示登录表单:'(

Bob 无法更改本地应用程序的前端代码以自行发送每个请求中的凭据(与 SPA 一样)。事实上,他无权访问该应用程序。他只能访问 nginx conf 和他自己的 html 登录表单。所以存储在这里是没有用的。

问题

bob 是否可以在收到 XHR 响应后让浏览器缓存凭据?

(目标是即使使用 XMLHttpRequest 也能表现得像默认行为)


编辑 …

javascript ajax caching nginx basic-authentication

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

node-jose 解释/示例?

我想在 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

  • 我怎么知道在 OCT、EC、RSA 等之间使用哪一种?最后,他们在签名部分谈论的输入缓冲区是什么?

我可以解释一下这些问题吗?

先感谢您。

javascript key token node.js jose

4
推荐指数
1
解决办法
7172
查看次数

Angular2:如何为多个组件提供相同的防护

在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)

我想要完全相同的后卫MyComponent2MyComponent3等等。

我该如何实施呢?我需要按组件声明新的防护类,还是可以重用我的类MyGuard

angular2-routing angular

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