J'essaie d'exécuter une fonction dans chaque page et je le fais dans AppServiceProvider.php dans boot () Je dépend de Auth code > classe mais Auth :: check () renvoie toujours false namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Auth;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
dd(Auth::check());
}
}
4 Réponses :
Depuis les Laravel Docs
Les fournisseurs de services sont vraiment la clé du démarrage d'une application Laravel. L'instance d'application est créée, les fournisseurs de services sont enregistrés et la demande est transmise à l'application amorcée. C'est vraiment aussi simple que ça!
Une fois que l'application a été amorcée et que tous les fournisseurs de services ont été enregistrés, la demande sera transmise au routeur pour distribution. Le routeur enverra la demande à une route ou à un contrôleur, et exécutera tout middleware spécifique à une route.
et comme l'authentification et la session sont mises à jour / initialisées à l'aide d'un middleware, cela signifie que vous ne pouvez pas y accéder depuis un fournisseur de services.
vous ne pouvez lier les données qu'aux vues dans vos fournisseurs de services utilisant des rappels qui sont appelés lorsque la vue est rendue (cela signifie que le serveur prépare déjà la réponse)
View::composer('is_authenticated', Auth::check());
comment je peux obtenir la même chose en utilisant des API car elles ne sont pas utilisées en lame / vue lors de l'utilisation des API Laravel
Peut-être qu'Auth n'est pas chargé avant AppServiceProvider. Parce que dans les contrôleurs Auth :: check () fonctionne bien. Je pense donc que l'utilisation de Auth :: check () dans AppServiceProvider est une très mauvaise idée. AppServiceProvider destiné à enregistrer et amorcer les services, peut-être y a-t-il un meilleur endroit pour Auth :: check () dans votre application?
vous avez besoin de View Composer pour cela.
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Auth;
use DB;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->composer('*', function ($view)
{
if (Auth::check()) {
}
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
Pour protéger correctement une route uniquement pour les utilisateurs autorisés, vous devez utiliser -> middleware ('auth') sur votre route.
https://laravel.com/docs/5.8/authentication
Je vous suggère également de mettre à jour votre question pour inclure la version Laravel que vous utilisez.
Peut-être un double de: stackoverflow.com/questions/41588918/...
Hy, je travaille avec symfony (donc je ne connais pas profondément Laravel) ... mais ... je pense que vous devez utiliser dans l'espace de noms App \ Providers: App \ Http \ Controllers \ Auth; ... vous pouvez utiliser comme Auth dans l'espace de noms App \ Http \ Controllers;
Merci les gars, j'ai utilisé un middleware à la place