laravel 5.3管理中间件使用?

时间:2017-01-01 19:04:08

标签: php laravel routes laravel-5.3 middleware

我需要一些关于laravel 5.3中间件的帮助。我的问题如下:

我制作的应用程序有2个前端区域,分别是web和admin。

<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
class AdminMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/');
        }
        return redirect('admin/');
    }
}

我在App \ Http \ Controllers \ Admin文件夹中有2个控件

  

这些是LoginController和HomeController

如果我进入localhost:8000 / admin /我去LoginController并写你好。这是好的,但如果我去localhost:8000 / admin / home我看到另一个字符串写“主页”但我想重定向到用户管理员/登录如果用户没有验证但我不能这样做。

我在Kernel.php中添加了中间件组件

'admin' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

并添加了像这样的routeMiddleware

'admin' => \App\Http\Middleware\AdminMiddleware::class,

我想告诉它我不想要角色系统

我想制作2个模块

  1. 用户模块(位于路径文件夹中的web.php - &gt;中)
  2. 管理模块(位于路径文件夹中的admin.php - &gt;中)
  3. 用户和管理员不同。

    用户可以成为管理员吗?不...管理员与用户不同......(其他人)

1 个答案:

答案 0 :(得分:0)

您必须在App \ Providers \ RouteServiceProvider.php

文件中添加此功能
public function map()
{
    $this->mapApiRoutes();

    $this->mapWebRoutes();

    $this->mapAdminRoutes();
    //
}

...

protected function mapAdminRoutes()
{
    Route::group([
        'middleware' => 'admin',
        'namespace' => $this->namespace,
    ], function ($router) {
        require base_path('routes/admin.php');
    });
}