小编Aka*_*shi的帖子

验证WordPress REST API JWT令牌时出现jwt_auth_no_auth_header错误

我有两个AWS实例,一个用于WordPress网站,另一个用于React应用程序.为了将它们连接在一起,我使用"WP REST API - OAuth 1.0a服务器"和"用于WP-API的JWT身份验证"来访问WP REST API.

我能够生成令牌,/wp-json/jwt-auth/v1/token但是当我尝试访问任何其他端点或者如果尝试验证令牌时,/wp-json/jwt-auth/v1/token/validate我收到以下错误:

{
  "code": "jwt_auth_no_auth_header",
  "message": "Authorization header not found.",
  "data": {
    "status": 403
  }
}
Run Code Online (Sandbox Code Playgroud)

我抬起头,发现了一些要添加的东西.htaccess.我添加了我能找到但却没有成功的一切.

RewriteEngine On
RewriteBase /

# Enable HTTP Auth
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

# WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# For SetEnvIf Authorization
#RewriteRule (.*) - [env=myenv:1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
#SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
Run Code Online (Sandbox Code Playgroud)

我添加了以下代码,以查看请求中是否存在任何授权标头但没有任何授权标头

add_filter( 'rest_pre_dispatch', …
Run Code Online (Sandbox Code Playgroud)

authentication rest wordpress jwt

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

Angular2 - 将路由器出口外的数据传输到另一个组件

我是Angular2的新手,但我已经制作了30多个组件和服务,并使用了Input,Output,ChangeDetectorRef,Pipes.所以现在非常了解Angular2.我的app.component.ts看起来像这样

import { Component } from '@angular/core';
@Component({
    selector: 'soc',
    template: `
        <header-block></header-block>
        <router-outlet></router-outlet>
    `,
})
export class AppComponent { }
Run Code Online (Sandbox Code Playgroud)

因为我需要在每个页面中使用我的标题块,所以我将它添加到路由器块之外,所以我不必在任何地方添加它.现在我遇到的问题是在router-outlet中的视图中执行操作后更改header-block中的变量值.

例如,我有一个菜单,只有在用户登录后才能看到.

{{ user_is_logged }}
<ul class="nav navbar-nav navbar-right" *ngIf="user_is_logged == '1'">
    <li><a href="#" (click)="logout($event)">Logout</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

user_is_logged是一个变量,其值来自header.block.component.ts中的 localStorage

user_is_logged:string = localStorage.getItem("logged");
Run Code Online (Sandbox Code Playgroud)

当用户未登录时,即home.component.ts (其中写入了登录逻辑)未定义user_is_logged,我要求用户登录并在成功登录后更新user_is_logged变量的值并更新localStorage值变量然后通过使用ChangeDetectionRef(cdr)触发检测更改,然后路由到用户配置文件

this.user_is_logged = "1";
localStorage.setItem('logged', '1');
this.cdr.detectChanges();
this.router.navigate(['u/'+user_id']); //user_id is from login response from server
Run Code Online (Sandbox Code Playgroud)

问题是当我在成功登录后到达用户配置文件时,{{user_is_logged}}的值永远不会更新,即使在使用变量本身或使用localStorage中的值甚至调用检测时也是如此.

是可以这样做还是我必须分别为每个页面添加header-block?如果我错过了什么,请询问更多信息.


编辑 ============>

所以在浏览了Subject,BehaviourSubject,AsyncSubject,ReplaySubject,Observables以及我不能让它工作的时候.这是我写的最后一个代码:

home.page.component.ts(登录发生并且必须发出事件)

import { HomeService } from '../services/home.service';
// No observable …
Run Code Online (Sandbox Code Playgroud)

angular

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

标签 统计

angular ×1

authentication ×1

jwt ×1

rest ×1

wordpress ×1