Interface de l'application de développement php, problème de connexion utilisateur
La situation est la suivante. Après une connexion réussie, l'interface de connexion utilisateur précédente n'est pas enregistrée sur le serveur session
Elle peut être enregistrée côté application. Ainsi, même si l'utilisateur se connecte avec succès, lors du réglage de certaines interfaces, user_id
doit quand même être passé en paramètre au lieu d'être obtenu depuis le session
du serveur.
Aujourd'hui, je souhaite modifier l'interface de connexion et d'enregistrement. Mon collègue a dit que l'interface de l'application n'avait pas le concept de session
, mais j'ai toujours l'impression qu'il devrait y avoir d'autres moyens de stocker les sessions utilisateur sur le serveur.
Je veux donc demander à tous les maîtres :
1. php开发app接口有没有`session`的概念?
2. 如果没有,用户会话是怎么处理的?就是当前是否在登录状态
Merci à tous !
Vous pouvez jeter un œil à jwt
Autonome : la charge utile contient toutes les informations nécessaires à l'utilisateur
Je définis le jeton et l'heure d'expiration, et j'utilise le jeton pour vérifier
Tout d'abord, vous créez une interface de connexion. L'application appelle cette interface. Après avoir vérifié le nom d'utilisateur et le mot de passe transmis, renvoyez-lui un jeton.
Jeton, vous créez une table à enregistrer, et la table stocke le jeton user_id expire_data et d'autres champs. Notez que le jeton et l'id_utilisateur sont uniques.
Chaque fois qu'il demandera d'autres interfaces à l'avenir, il lui suffira de vous apporter ce jeton et vous pourrez vérifier le jeton.
Le jeton transmis est crypté/expiré/garanti d'être unique, ce qui est essentiellement cela.
1. Apportez l'utilisateur
nom d'utilisateur
etmot de passe
dans l'en-tête de la requête, accédez au serveur pour vérification, puis poursuivez la logique métier après avoir transmis la requête.Avantages : empêche l'
api
côté serveur d'être appelée à volonté. Inconvénients : le nom d'utilisateur et le mot de passe sont échangés à chaque fois, le nombre d'interactions est important et la transmission en texte clair du mot de passe n'est pas sécurisée.username
和password
,到服务器端做验证,通过才继续下边业务逻辑。优点:防止了服务器端
api
被随意调用。缺点:每次都交互用户名和密码,交互量大,且密码明文传输不安全。
2.第一次请求,要求
username
和password
,验证通过,发送cookie
到客户端,app
保存cookie
值。每次请求带上
cookie
。优点:和
pc
上浏览器认证的原理一样了。以上两点,只有注册用户,才能有权访问业务逻辑。
而有些
app
有大量的不需要注册数据api3.制定一个
🎜Sur les deux points ci-dessus, seuls les utilisateurs enregistrés peuvent avoir accès à la logique métier.token
生成规则,按某些服务器端和客户端都拥有的共同属性生成一个随机串,客户端生成这个串,服务器收到请求也校验这个串。缺点:随机串生成规则要保密。
Et certaines
applications
disposent d'un grand nombre d'API qui ne nécessitent pas de données d'enregistrement🎜 🎜3. Développez une règle de génération detoken
pour générer une chaîne aléatoire basée sur certains attributs communs partagés par le serveur et le client. Le client génère cette chaîne, et le serveur vérifie cette chaîne à la réception de la demande. .Inconvénients : Les règles de génération de chaînes aléatoires doivent rester confidentielles. 🎜
Vous pouvez procéder ainsi. Différents utilisateurs obtiennent différents jetons via l'interface d'autorisation, définissent le délai d'expiration du jeton, laissent le client mettre le jeton dans l'en-tête de chaque demande et mettent à jour le jeton régulièrement
Utilisez le jeton pour remplacer le session_id traditionnel stocké dans le cookie client, puis le jeton est utilisé comme nom de clé dans des bases de données telles que redis, et la valeur de la clé est l'uid de l'utilisateur, et le session_id peut être simulé via le haut- mécanisme d'expiration
Notre entreprise a un jeton et un délai d'expiration. Chaque fois que vous vous connectez, le jeton sera actualisé
.C'est ce que j'ai demandé sur notre site en cas de doute
Votre collègue a dit que l'application n'avait pas la notion de séance, je ne pense pas que ce soit exact ! J'espère que mes questions précédentes vous seront utiles !
La connexion se produit lorsque le serveur génère un identifiant de connexion réussi et le renvoie au client. La demande du client apporte l'identifiant de connexion et le serveur vérifie les informations de l'utilisateur en se connectant
.Le moyen sûr est
access_token
. Pour ce point, vous pouvez jeter un œil à l’interface API de WeChat ;access_token
。这点可以看看微信的api接口;简单做法,就是
Le moyen le plus simple estuser_id
user_id
;🎜