【发布时间】: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