2017-08-24 43 views
0

有沒有可能讓Tomcat和JDBC Realm Form Authentication返回不同的用戶表列作爲「username」而不是登錄時提供的用戶名?讓Tomcat JDBCRealm爲返回的用戶名使用不同的列

使用案例: 在我的應用程序使用servletRequest.getUserPrincipal()和它轉換爲org.apache.catalina.realm.GenericPrincipal。現在我想使用當前用戶的ID而不是登錄名來完成像在數據庫表中填寫「created_by」列這樣的任務。 此列列的數量,而不是一個字符串,由於種種原因(數據量,可能改變登錄名,...)

我沒有看到Tomcat docsJDBCRealm-docs此屬性。

我需要一個新的屬性userIdCol,可將其在的GenericPrincipal爲好。 如果在使用新屬性時直接使用HttpServletRequest中的ID,則更好。

我敢肯定,這是不可能開箱即用,但無論如何要求,作爲請求本身(有和ID號碼,而不是一個ID字符串)似乎很常見我。

任何意見非常感謝。謝謝。

回答

0

有沒有辦法與Tomcat的現有代碼做到這一點。

下面是我如何處理它:當用戶登錄時,我加載User對象並將其放入HttpSessionUser對象包含用戶的數字標識符。無論何時我需要執行某些數據庫操作,我都會將當前UserHttpSession傳遞到執行該操作的方法中。現在,處理數據庫調用的代碼可以訪問用戶的數字標識符。

+0

感謝您的回答。我也是這樣做的,但是想知道這個用例是否有更好的解決方案,因爲我認爲幾乎每個應用程序都需要這樣做。 – Blama

相關問題