微服务 教程
1085个小节阅读:196.5k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
之前我们使用配置文件做数据源,在真实开发中,我们往往会使用数据库作为数据源进行认证操作。Realm
负责连接数据源并进行具体认证,它有一个子类JdbcRealm
,该类可以自动连接数据库认证。
创建数据表
xxxxxxxxxx
CREATE TABLE `users` (
`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `users` VALUES ('baizhan', 'baizhan');
编写登录控制器方法
xxxxxxxxxx
"/user/login2") (
public String login2(String username,String password){
// 1.获取SecurityManager对象
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
// 2.为SecurityManager对象设置Realm
JdbcRealm jdbcRealm = new JdbcRealm();
jdbcRealm.setDataSource(dataSource);
securityManager.setRealm(jdbcRealm);
// 3.将SecurityManager对象设置到运行环境中
SecurityUtils.setSecurityManager(securityManager);
// 4.获取Subject对象
Subject subject = SecurityUtils.getSubject();
// 5.将前端传来的用户名密码封装为Shiro提供的身份对象
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
try {
// 6.shiro认证
subject.login(token);
// 7.认证通过跳转到主页面
return "main";
}catch (AuthenticationException e){
// 8.认证不通过跳转到失败页面
return "fail";
}
}
启动项目,访问登录页http://localhost/login,测试登录功能。
实时效果反馈
1. 在Shiro中,Realm
对象的子类可以自动连接数据库进行认证。
A SqlRealm
B DbRealm
C JdbcRealm
D MyRealm
2.在Shiro中,使用JdbcRealm
时,需要为JdbcRealm
配置对象。
A Resourse
B Mapper
C JdbcTemplate
D 数据源
答案
1=>C 2=>D