我的laravel管理中间件重定向到另一个URL

时间:2019-04-04 06:20:39

标签: php laravel laravel-5 laravel-middleware

我正在一个项目上,我想检查用户是否是管理员,如果他不是管理员,则将他重定向到登录页面,但是如果他是管理员,则将他重定向到在管理页面上,我最初将其设置为主页url,但后来将其更改为登录url,因此,如果用户是管理员,它将重定向至管理url,但如果不是,则仍将其重定向至主页url,而不是登录名我将其更改为此处的网址是管理员网址代码

<?php

namespace App\Http\Middleware;

use Closure;

class Admin{
    public function handle($request, Closure $next){
        if(auth()->user()->isAdmin == 1){
            return $next($request);
        }
        return redirect('login')->with('error','You have not admin access');
    }
}

这是web.php代码

Route::get('/', 'PagesController@index');
Route::get('/about', 'PagesController@about');
Route::get('/dashboard', 'DashboardController@index');
Auth::routes();
Route::get('admin/routes', 'AdminController@index')->middleware('admin');

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

尝试此操作,因为您正在使用路由重定向用户。

return redirect()->route('login')->with('error','You have not admin access');

希望这会有所帮助:)

答案 1 :(得分:0)

在中间件中访问登录后调用路由。

Auth::routes();
Route::get('/', 'PagesController@index');
Route::get('/about', 'PagesController@about');

Route::group(['middleware' => 'admin'], function() {
    Route::get('/dashboard', 'DashboardController@index');
    Route::get('admin/routes', 'AdminController@index')
});