关于 Laravel Session 的困惑,望高手解决
在laravel5.*中,session start被放到了web中间件中,如
<code> /** * The application's route middleware groups. * * @var array */ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // [ 'throttle:60,1', 'bindings', ], ];</code>
并且根据Route加载中间件的代码可以得知Controller是在被make之后才调用中间件
<code> /** * Get the middleware for the route's controller. * * @return array */ public function controllerMiddleware() { if (! $this->isControllerAction()) { return []; } return ControllerDispatcher::getMiddleware( $this->getController(), $this->getControllerMethod() ); }</code>
这个时候问题就来了,我有一个BaseController,在构造函数里面会判断用户登录状态,如果已经登录就获取登录用户信息保存到$this->login_user_info中供子类调用,如果先make controller,session还没有start,因此在构造函数中是无法获取到登录用户的session_id,部分代码如下
<code>/** * 控制层公有方法集合 * Class BaseController */ abstract class BaseController extends Controller { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; public $login_user_info; public $login_subuser_info; public function __construct() { $this->userModel = app(UserModel::class); if (session()->get('user_id')) { $this->login_user_info = $this->userModel->getLoginUser(); //设置模板全局变量 view()->share(['login_user_info' => $this->login_user_info]); } }</code>
我测试过在middleware中是可以得到session,因为这个时候已经执行了StartSession中间件代码,至于我为什么要这么做就说来话长,我的项目是一个老项目切换框架到laravel,所以为了最大限度的保持原有逻辑,并且还有一些奇奇怪怪的写法,没有采用Auth,这些暂且不论,有没有办法可以在构造函数中得到session,求各位大神帮忙,谢谢

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Session_Start () IsCrucialInPhpFormanAgingUsersessions.1) ItinitiateSanEwSessionIfNoneExists, 2) ConsomaSanExistingSession, and3) SetSasessionCooKieforContinuityAcrossrequests, permettant aux applications liées à la réaction et à la personne.

Composer est un outil de gestion des dépendances pour PHP et gère les dépendances du projet via le fichier composer.json. 1) Parse Composer.json pour obtenir des informations de dépendance; 2) analyser les dépendances pour former un arbre de dépendance; 3) Télécharger et installer les dépendances de Packagist au répertoire du fournisseur; 4) Générez le fichier composer.lock pour verrouiller la version de dépendance pour assurer la cohérence de l'équipe et la maintenabilité du projet.

React, Vue, AndangularCanbeegrategrated withLaravelByfollowingSpecificSetUpsteps.1)

PhpapplicationsCanBeoptimizedForsPeedAndFiciency: 1) AutoringOpCacheInphp.ini, 2) Utilisation de PreparedStatementswithpodOrdatabasequeries, 3) Remplacingloopswitray_filterandArray_Mapfordataprocessing, 4) Configurationnginxasareproxy, 5)

La raison de l'utilisation de l'injection de dépendance (DI) est qu'elle favorise le couplage lâche, la testabilité et la maintenabilité du code. 1) Utiliser le constructeur pour injecter les dépendances, 2) Éviter d'utiliser les localisateurs de services, 3) Utiliser les conteneurs d'injection de dépendance pour gérer les dépendances, 4) Améliorer la testabilité par l'injection des dépendances, 5) Évitez les dépendances de sur-injection, 6) Considérez l'impact des performances de DI.

PHPMYADMIN simplifie la gestion de la base de données MySQL via l'interface Web. 1) Créez des bases de données et des tables: utilisez une interface graphique pour fonctionner facilement. 2) Exécuter des requêtes complexes: telles que la requête de jointure, implémentée via l'éditeur SQL. 3) Optimisation et meilleures pratiques: y compris l'optimisation des requêtes SQL, la gestion de l'index et la sauvegarde des données.

TOIMPROVEPHPAPPLICATIONSPEED, SuivreSesEtsts: 1) Activer le codécachement de la codécaching avec un accumulation de dotation

LaravelisidealForfull-stackApplicationsduetoitselegantsyntax, comprehensivecosystem, andpowerfulfeatures.1) useeloquentormforIntivebackendDatamanipulation, butavoidn 1queryissues.2) employbladetetemplatforcleanfrontwiews, étant acautes overusing @ i i i
