【发布时间】:2015-08-27 06:12:13
【问题描述】:
我正在尝试使用 spring security 来保护我的应用程序。
我对 Spring Security 的理解是,他们会根据用户输入的密码检查从 UserDetails 加载的密码。
问题是我的登录验证是将用户名和密码输入到将返回结果代码的 pl/sql 函数中。所以我无法从数据库中获取密码。
int resultCode = (Integer) jt().execute(
"{? = call sec$utils.verify_password(?, ?, ?, ?) }",
new CallableStatementCallback(){
...
stmt.setString(3, username);
stmt.setString(4, password);
stmt.execute();
return stmt.getInt(5);});
在 Spring Security 中有没有一种方法可以自定义身份验证过程,以便我可以跳过 loadUserByUsername 并仅使用我的结果代码作为身份验证结果?
请,任何帮助将不胜感激
【问题讨论】:
-
做你的研究 Leo,你可以通过搜索和阅读自己回答问题,Spring 提供了大量的文档和教程来确定你是否需要 Spring Security。
-
对不起,我还是新手。但我确实已经对此进行了近 4 天的研究。形成我从 spring 文档中得到的想法,我不确定,但我觉得 spring-security 验证身份验证请求的方式不能满足我的需要。只是想知道这里的人们可能有一些技巧可以使弹簧安全性适用于我的情况。或者至少,他们可以给我一些建议。
-
你可以写一个
AuthenticationProvider来做这个。如果您不需要有关用户的任何其他信息,则只需检查结果并返回从用户名构造的User对象(例如,具有默认角色)。 -
谢谢@LukeTaylor,在您发表评论之前,我对此一无所知。我对 AuthenticationProvider 做了一些研究。我认为你的想法应该可行。
标签: java spring security spring-mvc spring-security