第一个是正常的,第二个会报no session SysUserService.java public SysUser login(String userName, String password) {
SysUser user = null; List<Object[]> list = sessionFactory.getCurrentSession().createSQLQuery("select id_,password_,user_name_ from `user_` where `user_name_`= '"+userName+"' and `password_`='"+password+"'").list(); for(Object[] o : list) { user = new SysUser(); user.setId(((BigInteger)o[0]).longValue()); user.setPassword((String)o[1]); user.setUserName((String)o[2]); } return user; } public List<String> findResourceByUser(SysUser user) {
return sessionFactory.getCurrentSession().createSQLQuery("select distinct(url_) from resource_").list(); }
还是不行 org.hibernate.HibernateException: No Session found for current thread谢谢song_1990 的提醒,应该是session生命周期的问题。只是很奇怪登录的方法doGetAuthorizationInfo是正常,获取权限信息的方法doGetAuthorizationInfo却有这个错
第一个是正常的,第二个会报no session
SysUserService.java
public SysUser login(String userName, String password) {
SysUser user = null;
List<Object[]> list = sessionFactory.getCurrentSession().createSQLQuery("select id_,password_,user_name_ from `user_` where `user_name_`= '"+userName+"' and `password_`='"+password+"'").list();
for(Object[] o : list)
{
user = new SysUser();
user.setId(((BigInteger)o[0]).longValue());
user.setPassword((String)o[1]);
user.setUserName((String)o[2]);
}
return user;
} public List<String> findResourceByUser(SysUser user) {
return sessionFactory.getCurrentSession().createSQLQuery("select distinct(url_) from resource_").list();
}
如果用isPermitted()主动去触发MyRealmk中的doGetAuthorizationInfo(),会正常返回结果。
但如果是通过访问去触发MyRealm中的doGetAuthorizationInfo(),会出现no session的错。
很奇怪
如果用isPermitted()主动去触发MyRealmk中的doGetAuthorizationInfo(),会正常返回结果。
但如果是通过访问去触发MyRealm中的doGetAuthorizationInfo(),会出现no session的错。
应该都有绑定,会不会是因为session已经关闭?还是?
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
这样试试
org.hibernate.HibernateException: No Session found for current thread谢谢song_1990 的提醒,应该是session生命周期的问题。只是很奇怪登录的方法doGetAuthorizationInfo是正常,获取权限信息的方法doGetAuthorizationInfo却有这个错
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>