Php 通过ajax实现Laravel身份验证
我编写用于管理ajax请求的控制器。我编写了一个构造方法,用于检查用户是否登录Php 通过ajax实现Laravel身份验证,php,laravel,laravel-5,laravel-5.1,Php,Laravel,Laravel 5,Laravel 5.1,我编写用于管理ajax请求的控制器。我编写了一个构造方法,用于检查用户是否登录,如果阻止工作正常,但总是返回用户。设置查看并返回构造不工作 控制器: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; use Auth; class AjaxController extends Con
,如果
阻止工作正常,但总是返回用户。设置
查看并返回构造不工作
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Auth;
class AjaxController extends Controller {
public function __construct() {
if (Auth::check() == FALSE) {
return view('errors.notLogin');
}
}
public function settings() {
return view('user.setting');
}
}
js:
您应该使用而不是重新实现该功能
public function __construct()
{
$this->middleware('auth');
}
然后在auth
中,您可以为ajax和常规http请求添加这两种情况-
public function handle($request, Closure $next)
{
if ($this->auth->guest())
{
if ($request->ajax())
{
return view('errors.notLogin');
}
else
{
return redirect()->guest('auth/login');
}
}
return $next($request);
}
您应该使用而不是重新实现该功能
public function __construct()
{
$this->middleware('auth');
}
然后在auth
中,您可以为ajax和常规http请求添加这两种情况-
public function handle($request, Closure $next)
{
if ($this->auth->guest())
{
if ($request->ajax())
{
return view('errors.notLogin');
}
else
{
return redirect()->guest('auth/login');
}
}
return $next($request);
}
这看起来像是中间件的工作 您不应该在AjaxController的构造函数中执行任何操作,而是应该为要保护的路由注册中间件:
Route::post('ajax/settings', [
'uses' => 'AjaxController@settings',
'middleware' => 'auth'
]);
由于您可能需要许多Ajax函数,因此可以使用相同的中间件和“Ajax”前缀将它们分组:
Route::group(['prefix' => 'ajax', 'middleware' => 'auth'], function () {
Route::post('settings', 'AjaxController@settings');
//Define more routes here...
});
“auth”是Laravel附带的预设中间件之一,您可以在App\Http\middleware\Authenticate找到它,并根据需要对其进行修改,或者注册您自己的“Ajax”中间件。在任何一种情况下,句柄函数都类似于:
public function handle($request, Closure $next)
{
if ($this->auth->guest()) {
return view('errors.notLogin');
}
return $next($request);
}
这看起来像是中间件的工作 您不应该在AjaxController的构造函数中执行任何操作,而是应该为要保护的路由注册中间件:
Route::post('ajax/settings', [
'uses' => 'AjaxController@settings',
'middleware' => 'auth'
]);
由于您可能需要许多Ajax函数,因此可以使用相同的中间件和“Ajax”前缀将它们分组:
Route::group(['prefix' => 'ajax', 'middleware' => 'auth'], function () {
Route::post('settings', 'AjaxController@settings');
//Define more routes here...
});
“auth”是Laravel附带的预设中间件之一,您可以在App\Http\middleware\Authenticate找到它,并根据需要对其进行修改,或者注册您自己的“Ajax”中间件。在任何一种情况下,句柄函数都类似于:
public function handle($request, Closure $next)
{
if ($this->auth->guest()) {
return view('errors.notLogin');
}
return $next($request);
}
你为什么不使用
您的构造函数应该是:
public function __construct() {
$this->middleware('auth');
}
您还可以在routes.php中指定中间件在路由上运行:
Route::group(['middleware' => 'auth'], function () {
Route::post('ajax/settings', 'AjaxController@settings');
}
你为什么不使用
您的构造函数应该是:
public function __construct() {
$this->middleware('auth');
}
您还可以在routes.php中指定中间件在路由上运行:
Route::group(['middleware' => 'auth'], function () {
Route::post('ajax/settings', 'AjaxController@settings');
}