使用 spring 3.0 进行用户身份验证

Posted

技术标签:

【中文标题】使用 spring 3.0 进行用户身份验证【英文标题】:User Authentication with spring 3.0 【发布时间】:2013-03-09 07:52:26 【问题描述】:

我尝试在 Google 中搜索,但找不到任何好的示例,其中使用数据库检查用户名和密码以进行身份​​验证。

用更简单的话来说,我如何使用 Spring 和 Hibernate 而不是 SPRING SECURITY 创建一个简单的登录表单,其中使用数据库检查凭据。

请帮我创建一个只有 Spring 3.0 而没有 Spring Security 3.0 的简单登录表单。谢谢。

【问题讨论】:

谁能想出一个简单的例子,我可以看到流程是如何进行的? 【参考方案1】:

将登录表单发布到以用户名和密码作为参数的 Spring Controller 的最简单方法。

在控制器中,您可以执行任何您想要验证用户名和密码的操作。最好是委托给一些负责处理它的服务层。

如果验证成功,那么你想做什么?可能会被重定向到首页。

现在主页渲染应该知道用户已经通过身份验证。这就是 Spring Security 提供帮助的地方。

但是您也可以通过编写一个 Servlet 过滤器来实现,在该过滤器中,您可以通过检查 http 会话来检查用户是否已通过身份验证。当然,成功登录后,您需要将其存储在会话中,然后过滤器才能使用它。

还有许多其他方法可以实现相同的目标,具体取决于您的要求,以及需要哪种安全控制。

【讨论】:

【参考方案2】:

您的解决方案有两个部分,其中一个涉及 Spring,另一个是您的代码:

// DAO returns null if no such username appears in the table.
String password = userDao.findPassword(username);
boolean isValidUser = (!password.equals(null));
// Write the code to implement behavior for valid and invalid users.

如果您可以对密码进行数据库 SELECT,则可以在没有 Spring Security 的情况下进行 Spring 身份验证。

您可能需要将该逻辑置于方法调用之前编织的方面。

您可能希望在会话中缓存该结果并在超过超时时使其无效。

【讨论】:

以上是关于使用 spring 3.0 进行用户身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在自定义 Spring security 3.0 身份验证中正确处理异常?

如何在 Spring 安全性中同时使用数据库和 LDAP 身份验证?

Spring Security 3.0 - 自定义基本 http 身份验证对话框

禁用 cookie 时如何验证用户身份?

使用 Spring Security 在一个应用程序中结合数据库和 SAML 身份验证

Kubernetes liveness 探针是不是支持使用 PKI 进行用户身份验证?