java - À propos de la conception du système de connexion Spring MVC
天蓬老师
天蓬老师 2017-05-17 10:08:17
0
4
579

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 ?

Supplément

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.

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(4)
滿天的星座

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 configurerisLogined 默认为FALSE,每次登陆成功后更新为TRUE,退出后更新为FALSE;判断登陆成功的标志用userName userPass 匹配,还有isLogined 判断;最后设置判断级别,先isLogined用户密码

Ty80

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

 ;
过去多啦不再A梦

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal