美文网首页
shiro在getPrincipal方法类型转换问题

shiro在getPrincipal方法类型转换问题

作者: LOok_阳阳 | 来源:发表于2018-06-08 23:57 被阅读0次

在spring boot的项目中整合Shiro和redis的时候遇到类型转换问题,com.troyboot.java.system.po.UserPo cannot be cast to com.troyboot.java.system.po.UserPo,初步查到的原因是devtools类加载器不同导致的


解决方案一:

在你的realm文件中,修改第一个参数为用户名;

SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(user.getAccount(), password, getName());

那么在类型强转的时候,也需要改成相应的类型(String);

public static String getUserAccount() {
      Object object = getSubjct().getPrincipal();
      return String.valueOf(object);
}

解决方案二:

优雅一点
PropertyUtils.copyProperties(to,from);

public static UserPo getUser() {
      Object object = getSubjct().getPrincipal();
      UserPo userPo = new UserPo();
      try {
          PropertyUtils.copyProperties(userPo,object);
      } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
          e.printStackTrace();
      }
      return userPo;
}

解决方案三:

如果你没有看懂我写的什么,或者你不需要热部署,可以在pom.xml文件中把spring-boot-devtools依赖注释了;

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
</dependency>

mybatis的mapper文件也会遇到这个问题,修改配置文件也可以,文章开头的链接里面有讲解。

相关文章

网友评论

      本文标题:shiro在getPrincipal方法类型转换问题

      本文链接:https://www.haomeiwen.com/subject/blyzsftx.html