数据库表名一定是users,账户和密码一定是 username 和 password
junit junit 4.12 test org.apache.shiro shiro-core 1.2.4 org.slf4j slf4j-log4j12 1.7.12 log4j log4j 1.2.17 c3p0 c3p0 0.9.1.2 commons-logging commons-logging 1.2 mysql mysql-connector-java 5.1.37
[main] jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm dataSource=com.mchange.v2.c3p0.ComboPooledDataSource dataSource.driverClass=com.mysql.jdbc.Driver dataSource.jdbcUrl=jdbc:mysql://localhost:3306/users dataSource.user=root dataSource.password=root jdbcRealm.dataSource=$dataSource securityManager.realms=$jdbcRealm
package shiro; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.config.Ini; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.Factory; public class ShiroDemo { public static void main(String[] args) { // 初始化SecurityFactory工厂 Factoryfactory = new IniSecurityManagerFactory("classpath:shiro.ini"); // 获取SessionFactory实例 SecurityManager securityManager = factory.getInstance(); // 把SecurityManager实例绑定到SecurityUtils SecurityUtils.setSecurityManager(securityManager); // 获得当前执行的用户 Subject currentUser = SecurityUtils.getSubject(); // 创建token令牌,用户名/密码 UsernamePasswordToken token = new UsernamePasswordToken("111", "222"); try { //身份认证 currentUser.login(token); System.out.println("身份认证成功!"); } catch (AuthenticationException e) { e.printStackTrace(); System.out.println("身份认证失败!"); } } }