Java Shiro自定义身份验证逻辑

Java Shiro自定义身份验证逻辑,java,authentication,jdbc,shiro,Java,Authentication,Jdbc,Shiro,对于使用Shiro验证用户,我有以下要求: 用户名和密码必须与数据库中存储的用户名和密码匹配。如果用户名和密码不匹配,则应显示一条错误消息,指示身份验证失败 帐户必须处于活动状态-用户通过激活电子邮件激活其帐户。如果用户的帐户未激活,则应显示一条错误消息,指示他们未单击激活电子邮件 帐户不能过期-用户帐户有过期日期。如果用户的帐户已过期,则应显示一条错误消息,指示帐户过期 注意:有两个数据库用于存储用户信息。其中一个存储身份验证信息(用户名和密码),另一个数据库存储帐户过期等信息 我只需在shi

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

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

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


    我猜需要实现一些定制Java逻辑来完成需求2和需求3。关于如何实现上述功能,有什么提示吗?我是否需要实现自定义领域?

    实现这一点的一种方法就是创建自定义领域

    我们也有一些自定义的aon认证要求。我们通过创建自己的自定义领域实现来实现这一点。我们扩展了AuthorizationRealm,并重写了DogeAuthenticationInfo方法,以检查是否可以检查用户登录。你可以把你的箱子放在那里

    如果您只在Web环境中使用SHIRO,您可能会考虑重置标准AutoC过滤器并重写ISAccess允许的方法。如果用户尚未激活或过期,则可以实现一些自定义重定向。