【问题标题】:Location of auth:api Middlewareauth:api 中间件的位置
【发布时间】:2021-08-27 18:55:40
【问题描述】:

谁能告诉auth:api中间件的位置?

根据auth:api 中间件,api 路由受非空用户保护。

我在名为 Is_Admin_Url_Accessible 的用户表中有一个 boolean 字段。我想在 auth:api 中间件中为某些路由添加一个条件,以使用户只有那些用户才能访问这些路由,而这些路由被允许访问管理区域。

我检查了这里的课程,但没有帮助。

\app\Http\Middleware\Authenticate.php

【问题讨论】:

  • 编辑供应商文件不是一个好主意。如果您提供更多信息,也许您会得到更适合的解决方案!请分享您的路线(似乎您想以与其他路线不同的方式处理某些路线)。并告诉我们这个布尔值的用途(你想为这些路由关闭中间件还是...)。
  • 你能告诉哪个供应商文件需要修改的位置吗?

标签: laravel-5.5 laravel-5.6 laravel-5.7


【解决方案1】:

您可以添加一个使控制用户可访问的中间件,您可以将其设置为您的路由组的中间件,例如auth:api

请在您的终端上运行php artisan make:middleware UserAccessible

运行上面的 artisan 命令后,您会看到在 App/Http/Middleware 文件夹中生成了一个名为 UserAccessible.php 的文件。

UserAccessible.php 内容

    namespace App\Http\Middleware;

    use Closure;
    use Illuminate\Support\Facades\Auth;

    class UserAccessible
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            $user = Auth::user();

            if(!$user->accesible){
                // redirect page or error.
            }

            return $next($request);
        }
    }

然后,你必须通过App/Http/Kernel.php定义一个路由中间件

Kernel.php 内容

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        ...
        'user_accessible' => \App\Http\Middleware\UserAccessible::class
    ];

最后,您可以为您的路由组定义路由中间件;

api.php 内容

    Route::group(['middleware' => ['auth:api', 'user_accessible']], function () {
        // your protected routes.
    });

希望这能解决你的问题。

【讨论】:

    猜你喜欢
    • 2021-01-21
    • 2017-03-23
    • 2019-03-05
    • 2021-12-08
    • 2018-08-02
    • 2019-11-30
    • 2021-08-21
    • 2021-04-03
    • 2019-12-14
    相关资源
    最近更新 更多