【发布时间】:2018-04-24 03:10:22
【问题描述】:
我有一个小难题,我正在尝试制作一个登录系统,使用 laravel auth 脚手架将普通用户与管理员用户区分开来。
问题在于它进入了中间件中的无限重定向循环。
按下登录按钮后,它会不断重定向到一条路线,问题是,我如何通过“laravel 方式”或任何其他方式解决此问题。
这是我的控制器: 1.基本的家庭控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('home');
}
}
-
主管理控制器 - 入口控制器:
namespace App\Http\Controllers\Admin; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class Start extends Controller { public function index(){ return view('admin/index'); } } -
登录控制器(auth 脚手架中的默认控制器-由我修改,我删除了构造函数):
namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers; class LoginController extends Controller { use AuthenticatesUsers; protected $redirectTo = '/home'; } -
中间件(如果 RedirectIfAuthenticated 则重定向):
namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; class RedirectIfAuthenticated { public function handle($request, Closure $next, $guard = null) { if (Auth::guard($guard)->check()) { if(Auth::user()->type == 2){//if user type is 1 then it's an admin. return redirect()->route('web-admin'); }else{ return redirect()->route('home'); } } return $next($request); } } -
路由文件(网络路由)
Route::get('/', function () { return view('index'); }); Auth::routes(); Route::middleware(['auth','guest'])->group(function() { Route::get('home',['as'=>'home', 'uses'=>'HomeController@index']); Route::get('web-admin',['as'=>'web-admin', 'uses'=>'Admin\Start@index']); });
【问题讨论】:
标签: php laravel loops redirect laravel-5