我不确定atm的一个问题,我已经通过用户表休眠处理我的登录。如果在应用程序运行时操作此表,则登录端不会发生任何更改(但是它们在表上进行,我为此使用 ZK 并且可以正确查看更改)。因此,如果我使用以下方式登录:管理员密码
然后把密码改成newpassword
我必须清理并构建应用程序,然后在登录发生更改之前运行它。所以换句话说我认为它只检查用户表数据一次,把它保存在某个地方?
无论如何,我认为代码可能会有所帮助:
applicationContext-security.xml 的片段
<beans:bean id="sesFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<beans:property name="configLocation">
<beans:value>classpath:\hibernate.cfg.xml</beans:value>
</beans:property>
</beans:bean>
<beans:bean id="userDAO" class="login.UserLoginDAOImpl">
<beans:property name="sessionFactory" ref="sesFactory"></beans:property>
</beans:bean>
<beans:bean id="userService" class="login.UserLoginService">
<beans:property name="userDAO" ref="userDAO"></beans:property>
</beans:bean>
<authentication-manager>
<authentication-provider user-service-ref="userService">
<!--<password-encoder hash="sha" />-->
</authentication-provider>
</authentication-manager>
休眠.cfg.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">admin</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<mapping class="contacts.Contacts" />
<mapping class="login.Users" />
</session-factory>
</hibernate-configuration>
UserLoginDaoImpl:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package login;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
/**
* The Class UserLoginDAOImpl
*/
public class UserLoginDAOImpl implements UserLoginDAO {
/** The hibernate template. */
private HibernateTemplate hibernateTemplate;
/**
* Sets the session factory.
*
* @param sessionFactory
* the new session factory
*/
public void setSessionFactory(SessionFactory sessionFactory) {
this.hibernateTemplate = new HibernateTemplate(sessionFactory);
}
@Override
public Users loadUserByName(String name) {
if (name != null && !name.equals("")) {
List<Users> usr = hibernateTemplate
.find("from Users where username ='" + name + "'");
System.out.println(usr.get(0));
if (usr.size() == 1) {
return usr.get(0);
} else {
System.out.println("USER SIZE IS INCORRECT");
return null;
}
} else {
return null;
}
}
}