【问题标题】:Laravel Authentication not working multiple controllersLaravel 身份验证不适用于多个控制器
【发布时间】:2016-05-31 07:09:10
【问题描述】:

大家好,我最近在 Laravel 上工作。我遇到了关于身份验证的问题。
每当我尝试对用户进行身份验证并将其重定向到特定控制器的视图时,它都可以正常工作,但是当我尝试打开另一个视图时,用户身份验证不起作用(用户注销)。基本上问题是我有两个控制器,所以如果我从身份验证重定向到其中任何一个控制器,另一个没有用户。
我希望我已经清楚地解释了我的问题

路线列表:结果 Route List

主页路由是我正在使用的那些......其他的只是虚拟的,就像现在一样

这是我的认证类

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Contracts\Auth\Guard;

class Authenticate
{
/**
 * The Guard implementation.
 *
 * @var Guard
 */
protected $auth;



public function __construct(Guard $auth)
{
    $this->auth = $auth;
}

/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next)
{
    if ($this->auth->guest()) {
        if ($request->ajax()) {
            return response('Unauthorized.', 401);
        } else {
            return redirect()->guest('/');
        }
    }

    return $next($request);
}
}

这是索引控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;

class IndexPageController extends Controller
{
/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */

public function __construct()
{

    $this->middleware('auth');

}




public function index()
{

   $user = Auth::user()->firstOrFail();
    return view('index')
        ->with(compact('user'));


    //
}

这是 UserProfileController

 <?php

 namespace App\Http\Controllers;

 use Illuminate\Http\Request;

 use App\Http\Requests;
 use App\Http\Controllers\Controller;
 use Illuminate\Support\Facades\Auth;

class UserProfileController extends Controller
{
/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */


public function __construct()
{

    $this->middleware('auth');

}


public function index()
{

    $user = Auth::user()->firstOrFail();


    return view('profile.index')
        ->with(compact('user'));
    //
}

路线

 <?php


use Illuminate\Support\Facades\Mail;
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/

/*Welcome Page routes */


Route::get('/' , function(){
    return view('auth.login');
});


Route::get('user/logout' , function(){
    Auth::logout();
return redirect('/');
});


Route::post('user/do-login' , 'Auth\AuthController@doLogin');

Route::get('user/create' , 'Auth\AuthController@createUser');

/*---------------------------*/


/*Welcome Page AJAX routes*/
Route::get('/checkAvailibility' , 'WelcomePageController@usercheck');







/*---------------------------*/



/*Images Routes*/
Route::post('image/do-upload' ,'GalleryController@doImageUpload');
Route::post('gallery/save' , 'GalleryController@saveGallery');

Route::get('gallery/list' , 'GalleryController@viewGalleryList');
Route::get('gallery/view/{id}' , 'GalleryController@viewGalleryPics');
Route::get('gallery/delete/{id}' , 'GalleryController@deleteGallery');
/*---------------------------*/


/*Event Routes */

Route::post('create/Image-Upload' , 'CreateEventFormController@ImageUpload');
Route::post('create' , 'CreateEventFormController@store');


Route::get('create/event-image' , 'CreateEventFormController@createEventFormImage');
Route::post('create/event-image' , 'CreateEventFormController@UploadEventImg');

Route::get('create' , 'CreateEventFormController@create');

Route::get('event/{id}' , [ 'as' => 'event_list' , 'uses' => 'CreateEventFormController@show']);


/*---------------------------*/




/*-------------- Main Page Routes -------------------*/


Route::get('event/{id}' , [ 'as' => 'event_list' , 'uses' => 'CreateEventFormController@show']);


Route::get('index' ,[ 'as' => 'index' , 'uses' => 'IndexPageController@index']);




/*-------------- END -------------------*/






/*-------------- Main Page Routes -------------------*/


Route::get('profile' , 'UserProfileController@index');
Route::get('profile/{id}' , 'IndexPageController@show');


/*-------------- END -------------------*/









Route::get('/email', function () {

    $data = array(
        'name' => "Learning Laravel",
    );

    Mail::send('emails.test', $data, function ($message) {

        $message->from('yourEmail@domain.com', 'Learning Laravel');

        $message->to('yourEmail@domain.com')->subject('Learning Laravel test email');

    });

    return "Your email has been sent successfully";

});

【问题讨论】:

  • 哪个版本的 Laravel?
  • 你能用你的控制器方法更新问题吗?
  • 能否请您包含您的 routes.php 文件
  • 好的,我已经更新了控制器和路由
  • 主页面路由是我正在使用的那些......其他人现在只是虚拟......

标签: php laravel authentication middleware controllers


【解决方案1】:

您的AuthController.php 可能有问题。

您是否有机会使用Auth::attempt() 进行身份验证?如果是这样,我过去曾遇到过在身份验证后回显某些内容会导致问题的问题。

另一种可能性是存储会话时出现问题。可能只是会话没有被保存/写入这样简单的事情。

【讨论】:

  • 我正在使用 Auth atemp
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 2015-08-28
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多