Php 使用laravel 5.6检查中间件中的用户身份验证
我正在尝试在Laravel5.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) {
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
中间件。您也不需要在controllersession\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');
}