SSM+shiro整合遇到 的问题

2018-11-22  本文已影响0人  HannahLi_9f1c

这几天在做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{

上一篇下一篇

猜你喜欢

热点阅读