swooletw / laravel-swoole

High performance HTTP server based on Swoole. Speed up your Laravel or Lumen applications.
MIT License
4.04k stars 390 forks source link

Swoole and Bouncer #461

Open fibis opened 3 years ago

fibis commented 3 years ago

Make sure you read Issues Guideline and answer these questions before submitting your issue. Thanks! (Any non-English issues will be closed immediately.)

  1. Please provide your PHP and Swoole version. (php -v and php --ri swoole) PHP 7.4.13 Swoole 4.5.9

  2. Please provide your Laravel version. 8.21.0

  3. Which release version of this package are you using? 2.6.68

  4. What did you do? If possible, provide a recipe for reproducing the error. We are using Bouncer for permission management. There is a function to test, if a user has an ability. This function is internal calling $this->gate()->allows($ability, $arguments);, so a Laravel gate function.

If a Swoole worker handle the request the first time, the function to check the ability, is always returning that the user didn't have this ability. Every request after that, the function to check is returning the correct result for the ability check.

I cannot explain why this does not work only with the first request. I also added the BouncerServiceProvider to the providers in the config, like mentioned in this issue. Is therefore maybe an explanation and a solution that also the first request is working?

Arkanius commented 3 years ago

Hi!

Could you please share a dump of your fist and the following requests?

fibis commented 3 years ago

@Arkanius sure, what exactly do you need? A simple dd of the request?

Arkanius commented 3 years ago

Yes, it would be good to check a request that works and the failed request

fibis commented 3 years ago

The problem is not depending on the request. The same request is first failing and after the first fail it is working, since all Bouncer permissions are loaded and cached.

flemeur commented 3 years ago

Hi

I managed to get Bouncer to play nice with Swoole. Maybe this can help you as well? https://github.com/JosephSilber/bouncer/issues/522#issuecomment-777352977