Mon idée actuelle est de définir un User
对象,其中包括uid
, username
, password
, isLogined
等。然后设置一个拦截器,在用户第一次请求(session开始)的时候,从数据库中根据user.isLogined
判断用户是否登录,如果登录了就在session级别上设置isLogined
égal à vrai, sinon il redirigera vers la page de connexion.
Mais dans ce cas, comment dois-je déterminer l’identité de l’utilisateur lorsque celui-ci fait la première demande ? Si uid
est défini dans le cookie, cet identifiant peut être falsifié par d'autres, ce qui présente un risque potentiel pour la sécurité.
Existe-t-il une bonne solution à ce problème ?
Mon principal problème est de savoir comment juger de la légitimité de l'identité de connexion de l'utilisateur. Maintenant, mon idée est de crypter l'identifiant de l'utilisateur et de l'enregistrer dans un cookie. Moi seul connais cette clé, afin que les autres ne puissent rien faire même s'ils connaissent la clé. ID utilisateur. Je voudrais demander si cela est raisonnable.
Ce risque est énorme : si l'uid est remplacé par celui de quelqu'un d'autre et que cette personne est connectée, elle sera alors connectée en tant que quelqu'un d'autre
Suivez votre plan :
1. Définissez l'UID du cookie à chiffrer, ou une chaîne aléatoire sans signification
2 Utilisez cette chaîne pour comparer avec la base de données, ou comparer avec le cache, et vérifier l'IP en même temps. Ou. agent utilisateur pour améliorer la sécurité
3, pensez à la politique d'expiration de session
Tout d'abord, vous devez stocker les informations utilisateur dans votre base de données et la configurer
isLogined
默认为FALSE
,每次登陆成功后更新为TRUE
,退出后更新为FALSE
;判断登陆成功的标志用userName userPass 匹配,还有isLogined
判断;最后设置判断级别,先isLogined
后用户密码
;Il est recommandé que le statut de connexion ne soit pas stocké dans la base de données, du moins pas dans une base de données relationnelle ; vous pouvez renvoyer le jeton une fois la vérification de la connexion de l'utilisateur terminée, et toutes les demandes utilisateur ultérieures contiendront ce jeton. le champ d'autorisation des en-têtes. Vous pouvez en savoir plus sur jwt et l'implémentation associée
;Selon votre méthode actuelle, si je suis un utilisateur anonyme qui n'est pas connecté et qui demande l'une de vos interfaces, puis qui est intercepté depuis la base de données pour déterminer si l'utilisateur est connecté en fonction de user.isLogined, alors un problème survient . Qui est l'utilisateur dans votre user.isLogined ?
Il est recommandé de mettre les informations de réussite de connexion de l'utilisateur dans la session après s'être connecté directement. Lors de la demande, utilisez simplement l'intercepteur pour vérifier la session. Cette opération d'accès à la base de données est très coûteuse pour chaque demande.