Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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.4中的身份验证中间件_Php_Laravel - Fatal编程技术网

Php Laravel 5.4中的身份验证中间件

Php Laravel 5.4中的身份验证中间件,php,laravel,Php,Laravel,我对laravel中的中间件有一个问题。我想制作一个中间件,允许刚刚注册的用户登录。“是的”,我知道我可以通过“php artisan make:auth”实现这一点,但我想制作自己的中间件。 如果我输入url“/dashboard”,它会将我重定向到dashboard,这是非常糟糕的 也可以用于登录 所以我写了: <?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth;

我对laravel中的中间件有一个问题。我想制作一个中间件,允许刚刚注册的用户登录。“是的”,我知道我可以通过“php artisan make:auth”实现这一点,但我想制作自己的中间件。 如果我输入url“/dashboard”,它会将我重定向到dashboard,这是非常糟糕的 也可以用于登录

所以我写了:

<?php
namespace App\Http\Middleware;

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

class AuthUser
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(Auth::guard()->guest()) {
            return redirect()->route('home');
        }
        return $next($request);
    }
}
以下是我的路线:

    Route::get('/', function () {
    return view('welcome');
})->name('home');

Route::post('/signup',[
    'uses'=>'UserController@postSignUp',
    'as'=>'signup'
]);
Route::post('/signin',[
    'uses' =>'UserController@postSignIn',
    'as'  =>'signin'
]);

Route::group(['middleware'=>['auth_user']],function (){
    Route::get('/dashboard',[
        'uses'       =>  'UserController@getDashboard',
        'as'        =>  'dashboard',
    ]);
});
和我的用户控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use Illuminate\Support\Facades\Auth;

class UserController extends Controller
{
    public function getDashboard()
    {
        return view('dashboard');
    }
    public function postSignUp(Request $request)
    {
        $this->validate($request,[
            'email'     =>  'email|unique:users',
            'first_name'=>  'required|max:128',
            'password'  =>  'required|min:6'
        ]);
        $email=$request['email'];
        $password=bcrypt($request['password']);
        $first_name=$request['first_name'];
        $surname=($request['surname']);
        $user=new User();

        $user->email=$email;
        $user->password=$password;
        $user->first_name=$first_name;
        $user->surname=$surname;

        $user->save();
        Auth::login($user);
        return redirect()->route('dashboard');
    }
    public function postSignIn(Request $request)
    {
        $this->validate($request,[
            'email'     =>  'required|email',
            'password'  =>  'required|min:6'
        ]);

 if(Auth::attempt(['email'    => $request['email'], 'password'       
            =>$request['password']]))      
        {

            return redirect()->route('dashboard');
        }
            return redirect()->back();
    }
}

在routes/web.php中定义路由时,不需要使用“web”中间件

默认情况下,它通过RoutingServiceProvider应用于routes/web.php路由

Route::group(['middleware'=>['auth_user']],function (){
    Route::get('/dashboard',[
       'uses'       =>  'UserController@getDashboard',
       'as'        =>  'dashboard',
    ]);
});

在5.4中,您可以访问
web.php
中的路由。我从路由中删除了它,但仍然不起作用。谢谢,现在如果我键入/dashboard,我会重定向到backpage,但如果我登录,它不会重定向到dashboard。问题可能出在中间件classRoute::get('/',function(){return view('welcome');})->name('home中;路由::post('/signup',['使用'=>'UserController@postSignUp“,”作为“=>”注册“]);路由::post('/signin',['使用'=>'UserController@postSignIn“,”作为“=>”签名“]);Route::group(['middleware'=>['auth_user']],function(){Route::get('/dashboard',['uses'=>'UserController@getDashboard“,”作为“=>”仪表板“,]”;});
Route::group(['middleware'=>['auth_user']],function (){
    Route::get('/dashboard',[
       'uses'       =>  'UserController@getDashboard',
       'as'        =>  'dashboard',
    ]);
});