0
votes

Laravel 5.8: Le lien de vérification par courrier électronique conduit à une erreur 403

J'utilise la dernière version de Laravel (normalement) et j'ai essayé de mettre en œuvre l'authentification avec la vérification du courrier électronique. Cependant, le lien dans l'e-mail que je reçois après une inscription à l'utilisateur conduit à une page d'erreur 403. Le lien semble correct cependant.

Je travaille dans "localhost" avec homestead et vagabond. L'enregistrement d'un utilisateur fonctionne, je reçois l'utilisateur créé à la fin de ma fonction et la base de données est bien remplacée. P>

J'ai dû modifier la méthode de création de regisController car le courrier n'était pas envoyé. p>

Premièrement, en cliquant sur le lien, je n'avais qu'une page vierge. Après une certaine lecture, j'ai appris que l'utilisateur devait être authentifié avant d'être vérifié et que mon registreController après avoir enregistré l'utilisateur ne l'authentifie pas. J'ai ajouté du code pour authentifier l'utilisateur après sa création. Maintenant, lorsque vous cliquez sur le lien, je reçois une page d'erreur 403. P>

Remarque: ma table qui n'est pas la table par défaut contient le champ e-mail_verified_at. P>

voici ma méthode de création à l'intérieur du RegistreController: p> xxx pré>

voici mon vérificationController: p> xxx pré>

J'ai essayé définir proxy $ "* ' ; code> en fix middleware TrustProxies. p>

Mes constantes de l'application dans le fichier .env: p> xxx pré>

dans mon fichier de routage Web, mon premier itinéraire est : P>

'url' => env('APP_URL', 'http://sunshine.local'),

'asset_url' => env('ASSET_URL', null),


8 commentaires

Avez-vous le contrôleur app / http / contrôleurs / auth / vérificationcontroller.php ? Si oui, pouvez-vous l'inclure dans votre question?


@Udoe. Oui, je l'ai, et je n'ai pas été modifié. Je monte mon message avec son code.


D'accord. Après avoir suivi le lien de vérification, votre utilisateur est-il vérifié? Je veux dire, lorsque vous vérifiez le champ e-mail_verified_at dans la table utilisateur, est-il null ou est mis à jour (même avec l'erreur 403)? De plus, pouvez-vous fournir votre définition de route d'origine dans web.php . Il semble que l'URL '/' est protégée en quelque sorte et doit être accessible via la méthode de route définie.


@Udoe. Le champ reste nul. Je mettez à jour mon message avec ma définition de route d'origine.


@Tomgiru Voir ma réponse. J'espère que cela aide.


Je vois Protected Protected $ Proxies = '*' . Êtes-vous derrière un serveur proxy?


@Udoe. Non, ce n'est qu'une solution que j'ai essayée d'un autre poste. J'utilise simplement ce site Web dans une configuration locale avec Vagrant et Homestead.


Je connais c'est un vieux! Mais si quelqu'un passe ici comme moi, pensait que cela pourrait aider. Le principal problème semble être le cache! et compilé des itinéraires et des vues. Après avoir cherché des solutions partout sur ce que j'ai mal fait. Il suffit de courir les commandes suivantes: php artisan config: cache , PHP Artisan config: Effacer , PHP Artisan cache: Effacer suivi de PHP Itinéraire Artisan: Clear et enfin PHP Artisan View: Effacer . Redémarré mon serveur et mon tour! Cela a commencé à travailler.


4 Réponses :


0
votes

à partir de votre fichier web.php code>, lors de la création de demandes Web HTTP, votre URL racine d'application '/' code> ne peut être consulté que via la route nommée: itinéraire ('home') code> qui renvoie une vue personnalisée.

Ainsi, incluez un redirectTo () code> méthode dans VerificationController.php Code> Comme ça P>

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
// other imports

class VerificationController extends Controller
{
    use VerifiesEmails;

    /**
     * Where to redirect users after verification.
     *
     * @var string
     */
    protected $redirectTo = '/';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware('signed')->only('verify');
        $this->middleware('throttle:6,1')->only('verify', 'resend');
    }

    protected function redirectTo()
    {
        return route('home');
    }
}


6 commentaires

Malheureusement, j'ai toujours une page d'erreur 403 après avoir cliqué sur le lien.


Ré-enregistré un nouvel utilisateur et vérifiez à nouveau le nouveau lien. De plus, vous n'avez inclus qu'une partie de votre vérificationcontroller . Inclure le tout


Modifier mon poste, et voici le lien que je reçois: sunshine.local / email / Vérifiez / ...


Essayez d'effacer vos caches d'itinéraire et de votre application et de rafraîchir la charge automatique en exécutant ces commandes de votre console dans l'ordre PHP Artisan Route: Cache , PHP Artisan Cache: Effacer et Dump automatique du compositeur . Re-Inscrivez-vous et voyez si cela aide.


J'ai essayé mais ça ne marche toujours pas. Notez que je n'ai pas pu exécuter PHP Artisan itinéraire: cache parce que mes itinéraires utilisent des fermetures.


Désolé, utilisez ces PHP Artisan itinéraire: Effacer et ce Compositeur Dump-AutoLoad



0
votes
Auth::routes(['verify' => true]);`
I Noticed you have a backtick in your route. Just after the verify route semi colon. Try removing that and see what happens

2 commentaires

Seule une erreur de colle-colle. Je ne l'ai pas dans mon fichier de routage.


@Tomgirou OK, avez-vous vérifié les fichiers journaux. 403 signifie une demande interdite. Cela signifie que vous n'êtes pas autorisé à voir cette ressource. Veuillez vérifier que l'utilisateur est connecté. Coller les erreurs enregistrées



0
votes

C'était due à un problème sur le nom d'un champ dans la table des utilisateurs.

Voir mon autre message pour la réponse: Laravel 5.8: N'oubliez pas que le jeton n'est pas enregistré dans la base de données


0 commentaires

0
votes

avait ce même problème; Vérifiez votre .env que votre

app_url = http: // ...

est correct et correspond à la correspondance.


0 commentaires