【问题标题】:Laravel - too many redirects issueLaravel - 太多重定向问题
【发布时间】:2016-11-30 12:23:28
【问题描述】:

我在做一个项目,网站有两种类型的用户AdminUser。我为 admin 制作了一个 middlewaremiddleware 工作正常,但是当我尝试登录时出现问题:

重定向太多

我的路线

<?php

Route::get('/', [
    'uses' => 'UserController@getIndex',
    'as' => 'welcome'
]);
Route::get('/{form?}', [
    'uses' => 'UserController@getIndex',
    'as' => 'index'
]);
Route::post('/exsist',[
    'uses' => 'UserController@postLogin',
    'as' => 'login'
]);
Route::group(['middleware' => 'auth'],function(){
    Route::group(['prefix' => '/admin','middleware' => 'admin'],function(){
        Route::group(['prefix' => '/my'],function(){
            Route::get('/home', [
                'uses' => 'AdminController@getHome',
                'as' => 'admin.home'
            ]);
        });
    });
    Route::group(['prefix' => '/'],function(){
        Route::get('/home', [
            'uses' => 'UserController@getHome',
            'as' => 'home'
        ]);
    });
});

和我的控制器

<?php

namespace App\Http\Controllers;

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

use App\Http\Requests;
use App\User;
class UserController extends Controller
{
        //main page
    public function getIndex($form = ''){
            if(Auth::check()){
                if(Auth::user()->isAdmin()){
                    return redirect()->route('admin.home');
                }else{
                    return redirect()->route('home');
                }
            }
            return view('welcome', ['form' => $form]);
        }
        //main login (index page)
        public function postLogin(Request $request){
            //validation
            $this->validate($request,[
                'email' => 'required|email',
                'pass' => 'required'
            ]);
            //authintecating user 
            if(Auth::attempt(['email'=>$request['email'], 'password'=>$request['pass']])){
                if(Auth::user()->isAdmin()){
                    return redirect()->route('admin.home')->with(['success'=>'You have successfuly loged in as Admin!']);
                }else{
                    return redirect()->route('home')->with(['success'=>'You have successfuly loged in as User!']);
                }
            }
            return redirect()->route('index')->with(['fail'=>'Wrong Email or Password!']);
        }
        public function getHome(){
            return view('home');
        }
}

为什么浏览器会报错?

【问题讨论】:

    标签: laravel laravel-5.2 laravel-routing laravel-middleware


    【解决方案1】:

    尝试改变:

    Route::get('/{form?}', [
    'uses' => 'UserController@getIndex',
    'as' => 'index'
    ]);
    

    收件人:

    Route::get('/form/{form?}', [
    'uses' => 'UserController@getIndex',
    'as' => 'index'
    ]);
    

    我相信当你去 '/' 路线时,'/{form?}' 路线正在被执行。

    【讨论】:

    • 伙计,你是个天才(y).. 我不为我的想法感到尴尬
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 2020-10-21
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多