Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用laravel 5.6检查中间件中的用户身份验证_Php_Laravel_Middleware - Fatal编程技术网

Php 使用laravel 5.6检查中间件中的用户身份验证

Php 使用laravel 5.6检查中间件中的用户身份验证,php,laravel,middleware,Php,Laravel,Middleware,我正在尝试在Laravel5.6中创建一个中间件,用于检查用户是否进行了身份验证。我的中间件: checklogin.php <?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; class checklogin { public function handle($request, Closure $next, $guard = null) {

我正在尝试在Laravel5.6中创建一个中间件,用于检查用户是否进行了身份验证。我的中间件:

checklogin.php
<?php

namespace App\Http\Middleware;

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

class checklogin
{

    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {

            return redirect('/welcome');
        }

        return $next($request);
    }


}
'checklogin' => \App\Http\Middleware\checklogin::class,
我还将其添加到路由器上:

Route::get('/login','loginController@index');
Route::post('/welcome','loginController@store')->middleware('checklogin');
也用

use App\Http\Middleware\checklogin;
我的登录控制器是:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use Session;
use Illuminate\Support\Facades\Redirect;
session_start();

class loginController extends Controller
{

    public function index()
    {
        return view('/login');
    }

     public function store(Request $request)
    {


        $name = $request->name;
        $result = DB::table('tbl_login')
                 ->where('name',$name)
                 ->first();
                 if ($result) {
                     Session::put('name',$result->name);
                     Session::put('id',$result->id);
                     return Redirect::to('/welcome');
                 }
                 else{
                    Session::put('messege','invalid email or password');
                    return Redirect::to('/login');
                 }
    }

我是拉雷维尔的新手。我刚刚开始学习。我不知道问题出在哪里。请帮忙

看起来还可以,但请检查这一行

if (Auth::guard($guard)->check()) {
   return redirect('/login');
}
您不能重定向POST路线,您只能重定向GET路线 您可以使用
/login
或任何其他路由

或者在“获取”中创建另一条路线

Route::get('/welcome','loginController@home')->middleware('checklogin');

public function home()
{
    return view('/home');
}

为什么要创建自己的中间件来检查身份验证。laravel构建了它的
auth
中间件。您也不需要在controller
session\u start
中手动启动会话,laravel有
web
中间件可以自动启动会话。请在此处查看身份验证
if (Auth::guard($guard)->check()) {
   return redirect('/login');
}
Route::get('/welcome','loginController@home')->middleware('checklogin');

public function home()
{
    return view('/home');
}