小编Biz*_*Bob的帖子

Angular 6 - 为什么在生成版本中缺少Bearer Token?(在dev构建中正常工作)

我正在使用Angular 6和HTTP Interceptor配置为将承载令牌应用于传出请求.

  • 在dev build(ng serve)中,应用了令牌,一切正常. :-)

  • 在生成build(ng serve --prod)中,请求是在没有承载令牌的情况下发出的. :-(

在prod构建中,我通过在应用它们之后将标头转储到控制台来验证正在应用标头.

我不知道为什么他们被排除在http请求之外.

我的environment文件没有差异.

我还应该注意什么?

丢失不记名令牌

我该怎么做才能解决这个问题?

起初我认为这是我的本地环境和我的暂存环境之间的问题,但后来我尝试在ng serve --prod本地运行并看到相同的结果.

所有这一切,除了一个是生产构建和一个开发构建之外,一切都是相同的.

智威汤逊拦截:

import { Injectable } from '@angular/core';
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class JwtInterceptor implements HttpInterceptor {
    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

        // add authorization header with jwt token if available
        let currentUser = JSON.parse(localStorage.getItem('currentUser'));

        if (currentUser && currentUser.token) …
Run Code Online (Sandbox Code Playgroud)

angular-http-interceptors angular

20
推荐指数
1
解决办法
1296
查看次数

Laravel 7 - 停止处理作业并清除队列

我在 AWS 上有一个生产系统并使用 Laravel Forge。有一个正在处理作业的默认队列。

我已经创建了许多作业,现在希望删除它们(因为它们需要很多小时才能完成,而且我意识到我的输入数据很糟糕)。我创建了一个具有良好数据的新作业,但只有在所有其他作业完成后才会对其进行处理。

如何删除所有作业?

redis它之前是使用队列驱动程序设置的。我不知道如何删除作业,因此我将驱动程序切换到database,并重新启动服务器,认为这至少会让作业停止处理。然而,令我沮丧的是,它们仍在继续处理:-(

我什至从 forge ui 中删除了工作程序并重新启动了服务器:作业仍在处理。

为什么作业会继续被处理?

我怎样才能阻止他们?

laravel laravel-forge laravel-queue laravel-7

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

RXJS - BehaviorSubject:正确使用 .value

我想知道behaviorSubject.value. 根据这个答案,我们应该只通过订阅获得价值。

一个对我来说似乎没问题的情况是我使用.value来确定下一个值来推送流,就像我切换一个简单的布尔值一样:

myBoolSubject = new BehaviorSubject(false);

toggle() {
  this.myBoolSubject.next(!this.myBoolSubject.value);
}
Run Code Online (Sandbox Code Playgroud)

使用的替代方法subscribe()如下:

toggle() {
   this.myBoolSubject.pipe(take(1)).subscribe(
      val => this.myBoolSubject.next(!val)
   );
}
Run Code Online (Sandbox Code Playgroud)

通过查看rxjs 源代码和上述答案,这两种方法之间的区别在于.value

  • 题目已经完成
  • 出现错误

在这个简单的例子中,我不会完成这个主题,我不认为错误是一个问题,因为我只是通过这个主题推送简单的布尔值。

这是一个有效的用例behaviorSubject.value吗?还有其他人吗?

另一种似乎可以使用的情况.value是从先前发出的值构造一个新对象时:

private state = new BehaviorSubject<State>(INITIAL_STATE);
public state$ = this.state.asObservable();

public updateState(changes: Partial<State>){
    const newState = {...this.state.value, ...changes};
    this.state.next(newState);
}

Run Code Online (Sandbox Code Playgroud)

另一种方法是将最新的状态发射缓存在另一个变量中,如下所示:

private _state = INITIAL_STATE;
private state = new BehaviorSubject<State>(INITIAL_STATE);
public state$ = this.state.asObservable();

public updateState(changes: Partial<State>){
    const …
Run Code Online (Sandbox Code Playgroud)

rxjs angular

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

如何解决Laravel Broadcasts + Pusher ..?

我正在关注使用Pusher设置广播的Laravel文档,它看起来非常直接,但我还没有完成它,所以我一定在某个地方犯了一个错误.

这就是我所做的:

服务器端

我创建了一个Event实现ShouldBroadcastNow接口并定义broadcastsOn()方法的方法.

class ThreadMessageCreated implements ShouldBroadcastNow {
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public function broadcastOn() {
        return new Channel('bobtest');
    }
Run Code Online (Sandbox Code Playgroud)

我正从我的一个API控制器中提取事件:

public function createMessage(Thread $thread, Request $request) {
    ...
    event(new ThreadMessageCreated($message, $thread));
    return $message;
}
Run Code Online (Sandbox Code Playgroud)

我在我的.env文件中配置了推送凭据.

客户端

我在客户端配置了Laravel Echo(通过angular-laravel-echo包)并将我的客户端订阅了该频道.

ngOnInit() {
    this.echo
        .join('bobtest', 'public')
        .listen('bobtest', 'ThreadMessageCreated')
        .subscribe(()=>alert('message received'));
    console.log(this.echo);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我的API端点被命中时,事件被触发,但我在客户端看不到任何内容.

所以,我在broadcastOn()方法中添加了日志以验证它是否被调用.然后我将驱动程序从更改pusherlog,我确实看到广播信息被写入laravel.log文件.

因此,我假设在使用Pusher驱动程序时也会发生广播,并且要么没有从Laravel发出,要么没有被客户端接收.

我是插座,推杆和Laravel Echo的新手,所以我不知道在哪里可以找到更多信息来追踪它.

  • 我没有在laravel.log文件中看到任何错误.
  • 我在客户端的Chrome …

laravel pusher laravel-echo laravel-5.6

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

有没有办法捕获 websocket 连接中的关闭事件?

我正在我的平台中实现 WebSockets 连接。我在前端使用 Angular 10,并在 SockJS Client 1.5.0 上使用 StompJS 2.3.3 来建立与后端的连接。

我创建了一个 WebSockets 服务来管理连接,它正在连接并且工作正常。

这是我创建的服务:

export class WebSocketsService implements OnDestroy {
    /**
    * The authentication service to get the token from.
    */
    private authenticationService: AuthenticationService;

    private serverUrl = environment['ceNotificationsServer'];
    private socket;
    private state: BehaviorSubject<SocketClientState>;

    public constructor(authenticationService: AuthenticationService) {
    this.authenticationService = authenticationService;

    const client_id = environment['ceNotificationsClientId'];
    const token = this.authenticationService.getToken();

    const url = this.serverUrl + '/websocket' + '?clientId=' + client_id + '&Authorization=' + token;
    const ws = new SockJS(url);
    this.socket …
Run Code Online (Sandbox Code Playgroud)

stomp websocket sockjs angular

5
推荐指数
1
解决办法
2447
查看次数

如何让 PhpStorm 识别 Laravel 外观?

使用 Laravel Framework (5.6) 时,PhpStorm 在通过如下外观访问时无法识别方法:

$user = User::find($id);
Run Code Online (Sandbox Code Playgroud)

所以它总是抱怨:“在用户中找不到方法‘find’”

错误信息

我有 Laravel 插件和 Barry IDE 助手。我还需要做什么?

php phpstorm laravel laravel-5

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