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

时间:2018-07-31 02:28:44

标签: php laravel middleware

我正在尝试在Laravel 5.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);
    }


}

我在受保护的$ routeMiddleware的kernel.php中添加了它:

'checklogin' => \App\Http\Middleware\checklogin::class,

我也在路由器上添加了它:

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

并且还使用

use App\Http\Middleware\checklogin;

我的loginController是:

<?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');
                 }
    }

我的login.blade.php是:

<p class="alert-danger">
    <?php 
        $messege = Session::get('messege');
        if ($messege) {
            echo "$messege";
            Session::put('messege',null);
        }
    ?>
</p>

<form method="POST" action="{{url('/welcome')}}">                        
@csrf


    <label for="name" >Name</label>
         <input id="name" type="text" name="name" value="" required autofocus>                                           
            <button type="submit" class="btn btn-primary">
                login
            </button>

</form>

但是它显示此错误消息:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
No message

我是laravel的新手。我才刚刚开始学习。我不知道问题出在哪里。请帮忙!

1 个答案:

答案 0 :(得分:0)

似乎还可以,但请检查此行

   Year   RS   Team  RS_target
1  1962   599  WSA
2  1962   774  STL
3  1963   747  WSA
4  1963   725  STL
5  1964   702  WSA
6  1964   800  STL

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

或在 GET

中创建其他路线
/login