• 注册
  • 经验分享 经验分享 关注:4 内容:15179

    ssm整合shiro登录报错

  • 查看作者
  • 打赏作者
  • Lv.10
    封号会员

    在SSM(Spring、SpringMVC、MyBatis)框架中整合Shiro进行登录认证时,可能会遇到一些报错,下面将针对一些常见的错误进行分析和解答。

    ssm整合shiro登录报错
    (图片来源网络,侵删)

    我们要明确Shiro是一个强大的安全框架,它提供了认证、授权、加密和会话管理等功能,在整合Shiro时,我们需要关注以下几个方面:依赖配置、Shiro配置、Realm实现、过滤器配置等。

    以下是针对一些常见错误的分析和解决方案:

    1、提交的凭据与预期凭据不匹配

    错误信息类似于:”Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken 1300, rememberMefalse] did not match the expected credentials.”

    这个错误通常表示用户输入的账号密码与系统中的账号密码不匹配,解决这个问题,我们需要从以下几个方面进行检查:

    确认前端传递的账号密码参数名称是否与Shiro配置的参数名称一致。

    检查Shiro的Realm实现,确保从数据库中查询的账号密码是正确的。

    检查账号密码的加密方式,确保前端传递的密码与数据库中存储的密码加密方式一致。

    2、SecurityManager已定义且禁止覆盖

    错误信息类似于:”The bean ‘securityManager’, defined in class path resource [org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [com/xlhj/shiro/config/ShiroConfig.class] and overriding is disabled.”

    这个错误通常表示在Spring容器中已经定义了一个名为’securityManager’的Bean,且禁止覆盖,解决这个问题,我们可以采取以下措施:

    检查项目中是否有多个地方定义了’securityManager’的Bean,只保留一个定义即可。

    如果需要在不同的配置文件中定义’securityManager’,可以通过设置spring.main.allowbeandefinitionoverriding=true来允许覆盖。

    3、No SecurityManager accessible

    错误信息类似于:”org.apache.shiro.UnavailableSecurityManagerException: No SecurityManager accessible to the calling code,either bound to the org.apache.shiro.util.ThreadContext or as a vm static singleton.”

    这个错误通常表示在调用代码中没有可访问的SecurityManager,解决这个问题,我们需要检查以下方面:

    确保在web.xml中配置了ShiroFilter,且配置内容无误。

    确保ShiroFilter的配置在StrutsFilter之前。

    检查Shiro的配置文件,确保SecurityManager已经正确初始化并绑定到ThreadContext。

    4、无法创建shiroFilterFactoryBean

    错误信息类似于:”无法创建shiroFilterFactoryBean”

    这个问题可能是由于以下原因引起的:

    在@Configuration注解的配置类中,@Autowired注解失效,导致无法注入服务。

    LifecycleBeanPostProcessor导致@Autowired注解失效,可以尝试注释掉这个Bean,然后检查其他Bean的注入情况。

    解决这个问题的方法如下:

    确保在@Configuration注解的配置类中,@Autowired注解使用正确。

    逐一注释配置类中的Bean,测试哪个Bean导致注入失败。

    如果是LifecycleBeanPostProcessor导致的问题,可以考虑将其移除,并在其他地方管理Shiro的生命周期。

    在SSM框架中整合Shiro时,遇到报错是很常见的问题,我们需要从错误信息中找到关键信息,分析可能的原因,并逐一排除,在解决问题的过程中,保持代码的整洁和配置的正确性非常重要,通过以上分析,相信大家能够更好地解决在整合Shiro过程中遇到的问题。

    请登录之后再进行评论

    登录
  • 快速发布
  • 任务
  • 实时动态
  • 偏好设置
  • 帖子间隔 侧栏位置: