J'ai une application qui a la configuration suivante:
Laravel
Hôte: appname.local: 8000
Variables d'environnement:
Angulaire
Hôte: appname.local: 4200
Ce qui fonctionne actuellement:
Méthodes angulaires pour obtenir un jeton et authentifier l'utilisateur
Entrée de la base de données de session après une authentification réussie
Ce qui ne fonctionne pas:
Les requêtes ultérieures adressées aux routes protégées par le middleware suivant: auth: sanctum aboutissent toutes à des réponses non authentifiées. Les requêtes HTTP ne parviennent jamais à mes contrôleurs.
auth: routes protégées sanctum
Mais je peux voir dans la console du développeur que les cookies sont envoyés. Donc je ne comprends pas pourquoi Sanctum ne prend pas l'authentification
J'ai suivi plusieurs tutoriels et je n'arrive pas à comprendre pourquoi le middleware Authenticate de Laravel est incapable de voir que j'ai déjà authentifié mon utilisateur.
Est-ce que quelqu'un sait ce que je pourrais faire de mal?
Je pense qu'Eden a raison. Je visite cette question pour des raisons indépendantes, mais pour prendre en charge les sous-domaines, vous pouvez avoir un point dans SESSION_DOMAIN
variable env, mais jamais SANCTUM_STATEFUL_DOMAINS
.
Voici une configuration d'environnement valide pour le local et la production:
./. env
# localhost
SANCTUM_STATEFUL_DOMAINS="angular-site.test"
SESSION_DOMAIN=".angular-site.test"
# production
# SANCTUM_STATEFUL_DOMAINS="hockeysticks.net"
# SESSION_DOMAIN=".hockeysticks.net"
Cela permettra aux cookies de fonctionner sur plusieurs sous-domaines tels que auth.hockeysticks.net
, product.hockeysticks.net
, service.hockeysticks.net
, et api.hockeysticks.net
.
Si une personne met le point dans SESSION_DOMAIN
, les cookies fonctionneront toujours s'il n'y a pas de sous-domaines, mais il devrait être théoriquement plus sûr de l'omettre dans ce cas.
Voici une vidéo de Mohamed Said, développeur chez Laravel, parlant de Sanctum: https://www.youtube.com/watch?v=Kd3hcrxtTHA . Dans celui-ci, il parcourt la logique d'authentification.
J'ai eu le même problème. J'ai trouvé que l'API sanctum SPA fonctionne correctement si la demande est faite à partir d'une application non définie sur un port no.
vous pouvez héberger votre application frontale sur
appname.local
au lieu de appname.local: 4200