tomcat - 让 Tomcat JDBCRealm 为返回的用户名使用不同的列

标签 tomcat servlets tomcat8 servlet-3.0 jdbcrealm

是否可以让具有 JDBC 领域表单例份验证的 Tomcat 返回一个不同的用户表列作为“用户名”而不是登录时提供的用户名?

用例: 在我的应用程序中,我使用 servletRequest.getUserPrincipal() 并将其转换为 org.apache.catalina.realm.GenericPrincipal。现在我想使用当前用户的 ID 而不是 loginname 来完成诸如填写数据库表中的“created_by”列之类的任务。 由于各种原因(数据量、更改登录名的可能性等),此列是数字列而不是字符串

我在 Tomcat docs 中没有看到这个属性或 JDBCRealm-docs .

我需要一个新属性 userIdCol 并且在 GenericPrincipal 中也可用。 如果使用新属性,则如果 ID 直接在 HttpServletRequest 中可用,那就更好了。

我很确定这不可能开箱即用,但无论如何还是想问一下,因为请求本身(有 ID 号而不是 ID 字符串)对我来说确实很常见。

非常感谢任何建议。谢谢。

最佳答案

Tomcat 的现有代码无法做到这一点。

这是我的处理方式:当用户登录时,我加载一个User 对象并将其放入HttpSessionUser 对象包含用户的数字标识符。每当我需要执行某些数据库操作时,我将当前 UserHttpSession 传递到执行该操作的方法中。现在,处理数据库调用的代码可以访问用户的数字标识符。

关于tomcat - 让 Tomcat JDBCRealm 为返回的用户名使用不同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45857619/

相关文章:

java - eclipse ee servlet tomcat doPost http405

tomcat - WAR自动部署Tomcat

java - 如何发现网络上 Tomcat 服务器的 IP 地址?

spring - ServletOutputStream 字节数组到 pdf 损坏的 pdf

java - Tomcat 服务器测试 404 未找到错误

java - Apache Tomcat : "Context variable"

java - HTTP Servlet 中的 ArrayList 问题

java - 是否可以在不消耗流的情况下读取 HttpRequest 参数?

java - war文件如何在docker容器的tomcat中创建目录

spring-boot - 如何在 Spring Boot 应用程序中集成 JNI 共享库