美文网首页
SSM+shiro整合遇到 的问题

SSM+shiro整合遇到 的问题

作者: HannahLi_9f1c | 来源:发表于2018-11-22 20:45 被阅读0次

    这几天在做ssm+shiro整合做单点权限登录,然而由于第一次接触,问题重重,等我做完了就整理出博客出来,现在先说遇到的问题以及解决

    1.注入bean userService失败,原因其实是在Myshiro.java中的get和setter方法不对

    报错信息:SSMBean property 'userService' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

    解决方法:下面这两个地方要对应,不然找不到get和set方法


    2.xml中找不到相对应的实体类

    报错:org.apache.ibatis.executor.ExecutorException: No constructor found in com.hui.entity.User matching [java.lang.Integer, java.lang.String, java.lang.String]

    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createByConstructorSignature(DefaultResultSetHandler.java:656)

    解决办法:实体类中加一个无参构造器就可以了

    3.加密的时候登录报异常

    显示错误Authentication异常,我还以为是跟数据库有关,觉得可能是数据库存的也必须是加密过的数据,然后就把盐值加密后的结果放到数据库里,然后用没加密过的登录,但是还是不行,然后我就查了一下subject.login(token)方法之后执行到哪里,有的博客居然说到doGetAuthorizationInfo,我表示怀疑,在百度发现其实是执行到 doGetAuthenticationInfo。之后再去看shiro-context.xml配置文件,原来还是配置问题导致它加载不到自定义的realm,之前为了测试shiro配置是否成功,就先把自定义的realm注释掉了。然后数据库写什么密码就登陆什么密码,加密过程我会再另一篇博客上说明。

    原来:

    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">

    <!-- 注入realm -->

    <!--property name="realm" ref="myShiroRealm"/>-->

    </bean>

    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">

    <!-- 注入realm -->

    <property name="realm" ref="myShiroRealm"/>

    </bean>


    4.MyRealm中的userService要跟service层的实现类的名称要相同,不然会找不到。

    @Service("userService") 

    public class UserServiceImpl implements UserService{

    相关文章

      网友评论

          本文标题:SSM+shiro整合遇到 的问题

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