2017-08-24 1 views
0

Est-il possible d'avoir Tomcat avec formulaire d'authentification JDBC Realm retourner une colonne de table d'utilisateur différent comme « nom d'utilisateur » au lieu du nom d'utilisateur fourni lors de la connexion?Have Tomcat JDBCRealm utiliser une autre colonne pour le nom d'utilisateur retourné

Cas d'utilisation: Dans ma demande j'utilise servletRequest.getUserPrincipal() et le jeter aux org.apache.catalina.realm.GenericPrincipal. Maintenant, je veux utiliser le ID au lieu du loginname de l'utilisateur actuel pour des tâches comme remplir une colonne « created_by » dans une table de base de données. Cette colonne est une colonne de nombre et non une chaîne, pour diverses raisons (volume de données, possibilité de changer le loginname, ...)

Je ne vois pas un attribut pour cela dans le Tomcat docs ou JDBCRealm-docs.

je aurais besoin d'un nouvel attribut userIdCol et qu'il soit disponible dans GenericPrincipal ainsi. Encore mieux serait si l'ID était disponible dans le HttpServletRequest directement si le nouvel attribut est utilisé. Je suis assez sûr que ce n'est pas possible hors de la boîte, mais je voulais demander quand même, comme la demande elle-même (ai et numéro d'id au lieu d'une chaîne d'id) me semble très commune.

Tout conseil est grandement appréciée. Je vous remercie.

Répondre

0

Il n'y a aucun moyen de le faire avec le code existant de Tomcat.

Voilà comment je débrouille: lorsqu'un utilisateur se connecte, je charge un objet User et le mettre dans le HttpSession. L'objet User contient l'identifiant numérique de l'utilisateur. Chaque fois que j'ai besoin d'effectuer une opération de base de données, je passe le User actuel du HttpSession dans la méthode qui effectue cette opération. Maintenant, le code qui gère les appels de base de données a accès à l'identifiant numérique de l'utilisateur.

+0

Merci pour votre réponse. Je fais la même chose mais je me demandais s'il y avait une meilleure solution à ce cas d'utilisation, car à mon avis presque chaque application devra faire quelque chose comme ça. – Blama