1

我对使用 Shiro 验证用户有以下要求:

  1. 用户名和密码必须与数据库中存储的一致。如果用户名和密码不匹配,则应显示一条错误消息,指示身份验证失败。
  2. 帐户必须处于活动状态 - 用户通过激活电子邮件激活其帐户。如果用户的帐户未激活,则应显示一条错误消息,指示他们尚未单击激活电子邮件。
  3. 帐户不得过期 - 用户帐户有一个过期日期。如果用户的帐户已过期,则应显示一条错误消息,指示帐户已过期。

注意:有两个数据库用于存储用户信息。其中一个存储身份验证信息(用户名和密码),另一个数据库存储帐户到期时间等信息。

只需在 shiro.ini 中配置一个 JDBC 领域,我就可以轻松完成第一个要求。

我猜需要实现一些自定义 Java 逻辑来完成需求 2 和 3。关于如何实现上述内容的任何提示?我需要实现自定义领域吗?

4

1 回答 1

2

做到这一点的一种方法确实是创建一个自定义领域。

我们对身份验证也有一些自定义要求。我们通过创建自己的自定义领域实现来实现这一点。我们扩展了 AuthorizingRealm 并重写了 doGetAuthenticationInfo 方法来检查是否可以检查用户是否可以登录。您可以将案例 2 和案例 3 放在那里。

如果您只在 web 环境中使用 shiro,您可能会考虑覆盖 standation authc 过滤器并覆盖 isAccessAllowed 方法,如果用户尚未激活或过期,您可以实现一些自定义重定向。

于 2013-10-26T12:25:14.003 回答