我有两个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) 我是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)