auth:api中间件的位置

Pan*_*kaj 4 laravel-5.5 laravel-5.6 laravel-5.7

有人可以告诉auth:api中间件的位置吗?

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

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

我在这里检查了课程,但还是无济于事。

\app\Http\Middleware\Authenticate.php
Run Code Online (Sandbox Code Playgroud)

小智 7

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

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

运行UserAccessible.php完artisan命令后,您将在App/Http/Middleware文件夹中看到一个名为的文件。

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您必须通过定义路由中间件 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
];
Run Code Online (Sandbox Code Playgroud)

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

api.php 内容

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

我希望这能解决您的问题。