550696634

135 经验值

class BaseController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
}

laravel5.2 在控制器中怎么使用中间件?

csrf_token()在页面上输出为空,不知是什么原因

额我改成使用web的middleware了,可是登录后Auth::check();还是返回false;

不能用Authenticate.php这个middleware?

我是放在auth这个middleware中,没有定义名为web的middleware,求指教

这是路由:

//登录页
Route::get('admin/login','Admin\LoginController@index');
//登录校验
Route::post('admin/login','Admin\LoginController@login');
//后台管理
Route::group(['prefix' => 'admin','middleware'=>'auth', 'namespace' => 'Admin'], function ()
{
    //后台首页
    Route::get('main','MainController@index');
});

这是登录方法:

public function login(){
        $name = Input::get('name');
        $password = Input::get("password");
        $result = Auth::attempt(['name'=>$name,'password'=>$password]);
        if($result){//$result是true
            return redirect('admin/main');
        }
        return view('admin.login');
    }

重定向到admin/main路由,然后经过Auth中间件验证

 public function handle($request, Closure $next, $guard = null)
    {
        var_dump(Auth::check());//这个方法返回false
        if (Auth::guard($guard)->guest()) {
            if ($request->ajax()) {
                return response('Unauthorized.', 401);
            } else {
                return redirect()->guest('login');
            }
        }

        return $next($request);
    }

Authenticate中间件中handle方法中有Auth:check()方法,这个方法返回false

提交登录后经过Auth::attempt(['name'=>$name,'password'=>$password]);
这个方法返回true;然后进入后台首页前经过中间件Auth:check()方法返回false;按理说应该是true才对,为什么是false;