JAVA全系列 教程
3762个小节阅读:7088.1k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
之前的案例中,所有关于Shiro的对象都是自己创建的。我们在SpringBoot中使用Shiro,就可以将Shiro的对象交给容器管理,简化业务代码。
创建Shiro配置类
xxxxxxxxxx
@Configuration
public class ShiroConfig {
// SecurityManager对象
@Bean
public DefaultWebSecurityManager getDefaultWebSecurityManager(JdbcRealm jdbcRealm){
DefaultWebSecurityManager defaultSecurityManager=new DefaultWebSecurityManager();
defaultSecurityManager.setRealm(jdbcRealm);
return defaultSecurityManager;
}
// JdbcRealm
@Bean
public JdbcRealm getJdbcRealm(DataSource dataSource) {
JdbcRealm jdbcRealm = new JdbcRealm();
jdbcRealm.setDataSource(dataSource);
return jdbcRealm;
}
}
创建UserService.java
xxxxxxxxxx
@Service
public class UsersService {
@Autowired
private DefaultWebSecurityManager securityManager;
public void userLogin(String username, String password) throws AuthenticationException {
// 1.将SecurityManager对象设置到运行环境中
SecurityUtils.setSecurityManager(securityManager);
// 2.获取Subject对象
Subject subject = SecurityUtils.getSubject();
// 3.将前端传来的用户名密码封装为Shiro提供的身份对象
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
// 4.Shiro认证
subject.login(token);
}
}
编写登录控制器方法
xxxxxxxxxx
@RequestMapping("/user/login2")
public String login2(String username,String password){
try {
usersService.userLogin(username,password);
return "main";
}catch (AuthenticationException e){
return "fail";
}
}
启动项目,访问登录页http://localhost/login,测试登录功能。
实时效果反馈
1. Shiro提供的认证方法为
A subject.login(token);
B securityManager.login(token);
C subject.authentication(token);
D securityManager.authentication(token);
答案
1=>A