帮忙看下是我数据库写错了吗。不管怎么改都是登录失败。、
shiro-jdbcini如下:
[main]
dataSou=com.mchange.v2.c3p0.ComboPooledDataSource
dataSou.driverClass=com.mysql.jdbc.Driver
dataSou.jdbcUrl=jdbc://127.0.0.1:3306/shiro
dataSou.user=root
dataSou.password=root
jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.dataSource=$dataSou
securityManager.realm=$jdbcRealm
数据库代码:
CREATE TABLE `users` (
`username` varchar(50) NOT NULL,
`password` int(50) NOT NULL,
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
测试代码:
package com.liyang.shiro1;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
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 Test2 {
public static void main(String[] args) {
// 1 解析shiro。ini
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro-jdbc.ini");
// 2获得工厂实例
SecurityManager securityManager = factory.getInstance();
//3 把SecurityManager对象设置到运行环境中
SecurityUtils.setSecurityManager(securityManager);
//4通过 SecurityUtils获得主体对象subject
Subject subject = SecurityUtils.getSubject();
//5书写自己输入的账号和密码
UsernamePasswordToken token = new UsernamePasswordToken("sxt", "123");
//6验证密码
try {
subject.login(token);
//7 通过方法判断是否登录成功
if (subject.isAuthenticated()) {
System.out.println("登录成功");
}
} catch (AuthenticationException e) {
System.out.println("登录失败");
//e.printStackTrace();
}
}
输出结果: