Shiro自定义身份验证逻辑

时间:2013-09-19 01:58:22

标签: java authentication jdbc shiro

我对使用Shiro的用户进行身份验证有以下要求:

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

    我可以通过在shiro.ini中配置JDBC领域轻松完成第一个要求。

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

1 个答案:

答案 0 :(得分:2)

实现这一目标的一种方法是创建自定义领域。

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

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