Une erreur de jeton signifie une erreur de jeton.
Le jeton est généré côté serveur. Si le frontal utilise le nom d'utilisateur/mot de passe pour demander l'authentification au serveur et que l'authentification du serveur réussit, le serveur renverra un jeton au front-end. Le front-end peut apporter un jeton pour prouver votre statut juridique à chaque fois que vous en faites la demande (Recommandé : PHPSTORM )
Quels problèmes peut-il être résolu ?
Le jeton est entièrement géré par l'application, il peut donc éviter la même politique d'origine
Le jeton peut éviter les attaques CSRF (http://dwz.cn/7joLzx)
Le jeton peut être apatride et peut être partagé entre plusieurs services
Le jeton est généré côté serveur. Si le frontal utilise le nom d'utilisateur/mot de passe pour demander l'authentification au serveur et que l'authentification du serveur réussit, le serveur renverra un jeton au front-end.
Le front-end peut apporter un Token à chaque demande pour prouver son statut juridique. Si ce jeton est conservé côté serveur (par exemple stocké dans une base de données), il s'agit alors d'un jeton d'identité permanent.
Que ce soit d'un point de vue sécurité ou d'un point de vue révocation, Token doit avoir une période de validité.
Alors quelle est la durée de validité appropriée ?
On peut seulement dire que selon les besoins de sécurité du système, il devrait être aussi court que possible, mais il ne peut pas être ridiculement court - imaginez le temps d'extinction automatique de l'écran du téléphone mobile. S'il est réglé sur 10 secondes sans aucune opération, il s'éteindra automatiquement. Si l'écran est éteint et rallumé, vous devez entrer un mot de passe.
Si vous pensez que cela ne fonctionnera pas, essayez-le vous-même et réglez-le sur le temps le plus court possible. Tenez-vous-y simplement pendant une semaine (il n'est pas exclu que certaines personnes puissent s'y adapter). cette fois. Après tout, les fabricants de téléphones mobiles effectuent également des recherches sur l'expérience utilisateur).
Ensuite, un nouveau problème surgit. Si le jeton de l'utilisateur expire pendant le fonctionnement normal et que l'utilisateur doit se reconnecter... l'expérience utilisateur ne serait-elle pas très mauvaise ?
Afin de résoudre le problème de ne pas laisser les utilisateurs sentir que le jeton n'est pas valide pendant le processus d'opération, une solution consiste à enregistrer l'état du jeton côté serveur à chaque fois que l'utilisateur opère, le délai d'expiration du jeton. sera automatiquement actualisé (reporté) - La session est utilisée Cette stratégie est utilisée pour garder les utilisateurs connectés.
Cependant, il y a toujours un problème. Dans le cas de la séparation front-end et back-end et de l'application d'une seule page, de nombreuses requêtes peuvent être lancées par seconde, et l'actualisation du délai d'expiration à chaque fois entraînera un problème. coût très élevé.
Si le délai d'expiration du jeton est conservé dans la base de données ou le fichier, le coût sera encore plus élevé. Par conséquent, afin d’améliorer l’efficacité et de réduire la consommation, les jetons sont généralement stockés dans le cache ou en mémoire lorsqu’ils expirent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!