Faire expiration de la session de redirection de connexion?
Lorsque l'utilisateur se connecte et est authentifié, j'utilise Auth::user()->username;
pour afficher nom d'utilisateur de l'utilisateur sur le tableau de bord. Cependant, pour quelque raison lors de la session expire, la classe Auth
ne semble pas fonctionner et la page de tableau de bord déclenche une erreur comme trying to get property of non-object
pour Auth::user()->username;
. Comment puis-je rediriger l'utilisateur vers la page de connexion lorsqu'il clique sur un lien ou actualiser la page après que la session a expiré?
J'ai essayé le Authenticate.php middleware mais il y a toujours la renvoie à la page de login,tout ce que vous mettez les informations d'identification soit correcte ou incorrecte.Cependant,lorsque je n'utilise pas ce middleware connexions de l'utilisateur.Ai-je raté quelque chose?
Route.php
<?php
/*
|--------------------------------------------------------------------------
| 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.
|
*/
/*
Actions Handled By Resource Controller
Verb Path Action Route Name
GET /photo index photo.index
GET /photo/create create photo.create
POST /photo store photo.store
GET /photo/{photo} show photo.show
GET /photo/{photo}/edit edit photo.edit
PUT/PATCH /photo/{photo} update photo.update
DELETE /photo/{photo} destroy photo.destroy
Adding Additional Routes To Resource Controllers
If it becomes necessary to add additional routes to a resource controller beyond the default resource routes, you should define those routes before your call to Route::resource:
Route::get('photos/popular', 'PhotoController@method');
Route::resource('photos', 'PhotoController');
*/
//Display all SQL executed in Eloquent
//Event::listen('illuminate.query', function($query)
//{
// var_dump($query);
//});
define('ADMIN','admin');
define('SITE','site');
Route::group(['namespace' => ADMIN], function () {
Route::get('/','UserController@showLogin');
});
////////////////////////////////////Routes for backend///////////////////////////////////////////////////
Route::group(['prefix' => ADMIN,'middleware' => 'auth'], function () {
Route::group(['namespace' => ADMIN], function () {
//Route::get('/','EshopController@products');
//sumit routes for user registration
//Route::resource('users','UserController');
Route::get('/users/destroy/{id}','UserController@destroy');
Route::get('UserProf','UserController@userProf');
Route::get('users','UserController@index');
Route::get('/users/create','UserController@create');
Route::get('/users/adminEdit/{id}','UserController@adminEdit');
Route::post('/users/adminUpdate','UserController@adminUpdate');
Route::post('/users/store','UserController@store');
Route::get('/users/edit/{id}','UserController@edit');
Route::post('/users/update/{id}','UserController@update');
//airlines route
Route::get('airlines','AirlinesController@index');
Route::get('/airlines/create','AirlinesController@create');
Route::post('/airlines/store','AirlinesController@store');
Route::get('/airlines/edit/{id}','AirlinesController@edit');
Route::post('/airlines/update','AirlinesController@update');
Route::get('/airlines/destroy/{id}','AirlinesController@destroy');
//end sumit routes
//flight routes
Route::get('flights','FlightController@index');
Route::get('showFlightBook','FlightController@showFlightBook');
Route::get('flights/create','FlightController@create');
Route::post('flights/store','FlightController@store');
Route::get('flights/book','FlightController@book');
Route::get('flights/edit/{id}','FlightController@edit');
Route::post('flights/update','FlightController@update');
Route::get('flights/destroy/{id}','FlightController@destroy');
//Route::resource('flight','FlightController');
//hotels route
Route::get('hotels','HotelsController@index');
Route::get('/hotels/create','HotelsController@create');
Route::post('/hotels/store','HotelsController@store');
Route::get('/hotels/edit/{id}','HotelsController@edit');
Route::post('/hotels/update','HotelsController@update');
Route::get('/hotels/destroy/{id}','HotelsController@destroy');
//end sumit routes
//book-hotel routes
Route::get('hotel-book','HotelBookController@index');
Route::get('showHotelBook','HotelBookController@showHotelBook');
Route::get('hotel-book/create','HotelBookController@create');
Route::post('hotel-book/store','HotelBookController@store');
Route::get('hotel-book/book','HotelBookController@book');
Route::get('hotel-book/edit/{id}','HotelBookController@edit');
Route::post('hotel-book/update','HotelBookController@update');
Route::get('hotel-book/destroy/{id}','HotelBookController@destroy');
//Route::resource('hotel','HotelController');
//close flight routes
//for admin login
//Route::get('initlogin','UserController@lgnPage');
Route::get('login','UserController@showLogin');
//Route::get('privilegeLogin','UserController@privilegeLogin');
//Route::post('privilegeCheck','UserController@privilegeCheck');
Route::post('login','UserController@doLogin');
Route::get('/dashboard','DashController@index');
Route::get('logout','UserController@doLogout');
//user login
//Route::get('userLogin','UserController@showUserLogin');
//Route::post('userLogin','UserController@doUserLogin');
Route::get('/userDashboard','DashController@userIndex');
Route::get('Logout','UserController@doUserLogout');
//password reset
Route::get('forget-pass','UserController@showReset');
//Route::get('home', 'PassResetEmailController@index');
});
});
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);
Authenticate.php:
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class Authenticate {
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
* @return void
*/
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('auth/login');
return redirect()->guest('/');
}
}
return $next($request);
}
}
- Cela devrait être géré dans le middleware fichier
Authienticate.php
. Voir les lignes ici:{ ... } return redirect()->guest('auth/login');
Quel est votreroutes.php
ressembler? Sont toutes les routes qui nécessitent d'être connecté regroupés par cette middleware? - non, il n'est pas regroupés,Ok si le regroupement route par ce
Authenticate.php
middleware fait le travail,je vais donner l'essayer.donc surreturn redirect()->guest('auth/login');
le chemin de redirection devrait être remplacer avec notre propre page de connexion du chemin est-il? - oui, il devrait être votre page de connexion du chemin
- Je ne sais pas pour quelle raison,la page est toujours la renvoie à la page de connexion quel que soit credentails je l'ai mis sur la page de login quand je l'applique Authenticate.php middleware sur les routes.L'utilisateur est en mesure de vous connecter avant d'-je utiliser ce middleware.Que faire?
Vous devez vous connecter pour publier un commentaire.
Si vous voulez un middleware pour être exécuté lors de chaque requête HTTP à votre application, il suffit d'énumérer les middleware de classe dans l' $middleware propriété de votre app/Http/Kernel.php classe.
Ainsi, afin de protéger chaque itinéraire d'être accessible sans authentification faire
il va rediriger l'utilisateur si pas connecté. Mise à JOUR Garder à l'esprit que l'ajout de
auth
middleware comme global de la volonté de créer de redirection en boucle donc l'éviter.Et si vous voulez des itinéraires spécifiques pour être protégé puis fixez le middleware
auth
ce parcoursJe pense que vous n'êtes pas attacher la auth middleware pour vos itinéraires.
Créer un middleware comme ce
Puis regrouper les routes et les protéger comme ce
Offcourse, dans les itinéraires, vous devez spécifier vos liens etc, il permet uniquement lorsque l'utilisateur est authentifié et si non, alors la page de connexion s'être montré
Tout ce que vous avez à faire est de simplement mettre ce constructeur dans le haut du contrôleur pour votre tableau de bord. Il semble Laravel est un middleware qui gère déjà. Au moins, je peux confirmer de 5,4 et jusqu'.
De faire des séance de rediriger votre connexion ajouter ->middleware('auth') dans votre routeur fichiers comme indiqué ci-dessous, je suis en utilisant laravel 5.3
Ex:- Itinéraire::post('controllerName','nom du dossier\nom de fichier@fnNmae')->middleware('auth');
Ou visitez https://laravel.com/docs/5.3/authentication
Si la session est expire alors vous pouvez vous rediriger vers de connexion comme
ouvrir ce fichier app/Exceptions/Handler.php ajoutez ce code