简体   繁体   English

Laravel 5.6 Auth / admin显示空白页面(带有或不带有登录名)

[英]Laravel 5.6 Auth /admin showing blank page with or without login

I am new to Laravel and its 5.6 version. 我是Laravel及其5.6版本的新手。 I setup a Auth login using few commands over there. 我在那边使用了几个命令来设置Auth登录。 All is good going. 一切都很好。 But when I uploaded to my own live server then when I run site.com/admin [that should be redirect to site.com/login for non login scene]. 但是,当我上传到自己的实时服务器时,然后当我运行site.com/admin [对于非登录场景,应重定向到site.com/login]。 But I got a blank page. 但是我有一个空白页。 When I ran site.com.login then login page is working and I am in admin panel to work on. 当我运行site.com.login时,登录页面正在运行,并且我正在管理面板中进行工作。 My question is that why my site.com/admin page is blank. 我的问题是,为什么我的site.com/admin页为空白。 all other pages are working fine. 所有其他页面都工作正常。

here is my files. 这是我的文件。

routes/web.php 路线/ web.php

Route::get('/', 'HomeController@index')->name('home');;
Route::get('view/{slug?}', 'HomeController@view');

Auth::routes();
Route::prefix('admin')->group(function () {
    Route::get('/', 'Admin\AdminController@admin_index')->name('admin_index');
    Route::get('/dashboard', 'Admin\AdminController@dashboard')->name('dashboard');

    Route::get('locations', 'Admin\LocationsController@locations')->name('locations');
    Route::get('add-location', 'Admin\LocationsController@add_location')->name('add-location');
    Route::post('submit-location', 'Admin\LocationsController@submit_location')->name('submit-location');

    Route::get('posts', 'Admin\PostsController@posts')->name('posts');
    Route::get('add-post', 'Admin\PostsController@add_post')->name('add-post');
    Route::post('submit-post', 'Admin\PostsController@submit_post')->name('submit-post');
});
Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
});
Route::get('/logout', '\App\Http\Controllers\Auth\LoginController@logout')->name('logout');

app/Http/Kernel.php 应用程序/ HTTP / Kernel.php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];

    /**
     * The application's route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ], 
    ];

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'is_admin' => \App\Http\Middleware\IsAdmin::class,
    ];
}

app/Http/isAdmin.php 应用程序/ HTTP / isAdmin.php

namespace App\Http\Middleware;

use Closure;

class IsAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // return $next($request);
        if(auth()->user()->isAdmin()) {
            return $next($request);
        }
        return redirect('login');
        //return $next($request);
    }
}

AdminController.php AdminController.php

namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;  
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
class AdminController extends Controller {

    public function __construct(){

        $this->middleware('auth');
    }

    public function admin_index() {

        return view('admin.index');
    }

    public function dashboard() {

        return view('admin.dashboard');
    }

    public function admin() {

        return view('admin.index');
    }
}

anything else I can share please let me know. 我可以分享的其他任何信息,请让我知道。

Change: 更改:

Route::prefix('admin')->group(function () {
Route::get('/', 'Admin\AdminController@admin_index')->name('admin_index');
Route::get('/dashboard', 'Admin\AdminController@dashboard')->name('dashboard');

Route::get('locations', 'Admin\LocationsController@locations')->name('locations');
Route::get('add-location', 'Admin\LocationsController@add_location')->name('add-location');
Route::post('submit-location', 'Admin\LocationsController@submit_location')->name('submit-location');

Route::get('posts', 'Admin\PostsController@posts')->name('posts');
Route::get('add-post', 'Admin\PostsController@add_post')->name('add-post');
Route::post('submit-post', 'Admin\PostsController@submit_post')->name('submit-post');
});

To: 至:

Route::group([
'middleware' => ['auth', 'is_admin'],
'namespace'  => 'Admin',
'prefix'     => 'admin',
], function () {
Route::get('/', 'AdminController@admin_index')->name('admin_index');
Route::get('/dashboard', 'AdminController@dashboard')->name('dashboard');

Route::get('locations', 'LocationsController@locations')->name('locations');
Route::get('add-location', 'LocationsController@add_location')->name('add-location');
Route::post('submit-location', 'LocationsController@submit_location')->name('submit-location');

Route::get('posts', 'PostsController@posts')->name('posts');
Route::get('add-post', 'PostsController@add_post')->name('add-post');
Route::post('submit-post', 'PostsController@submit_post')->name('submit-post');
});

And: 和:

if(auth()->user()->isAdmin()) {

To: 至:

if(optional(auth()->user())->isAdmin()) {

Be sure you have isAdmin() function in your User model which return true or false 确保您的用户模型中具有isAdmin()函数,该函数返回truefalse

Your issue is that you are not using isAdmin middleware . 您的问题是您没有使用isAdmin middleware You can use middleware on route to check the admin role. 您可以在路由中使用middleware来检查管理员角色。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM