SpringBoot整合shiro环境搭建
1)在原来的项目基础上,新建一个springboot模块
2)导入thymeleaf依赖:
org.springframework.boot
spring-boot-starter-thymeleaf
3)测试保证环境没问题:
index.html
首页
首页
MyController:
@Controller
public class MyController {
//跳转到首页
@RequestMapping({"/", "/index","index.html"})
public String toIndex(Model model){
model.addAttribute("msg","Hello!Shiro!");
return "index";
}
}
4)整合shiro
- 1.导入shiro整合spring的包
org.apache.shiro
shiro-spring
1.8.0
- 2.目录
- 3.配置Shiro
ShiroConfig:
@Configuration
public class ShiroConfig {
//ShiroFilterFactoryBean
@Bean
public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("dwsm") DefaultWebSecurityManager sm){
ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
//设置安全管理器
bean.setSecurityManager(sm);
return bean;
}
//DefaultWebSecurityManager
//@Qualifier("userRealm") UserRealm userRealm这里的意思是:使得这里的userRealm与spring容器中的beanid="userRealm"的bean对象绑定
@Bean(name = "dwsm") //这里加上(name = "dwsm")之后,组件名就由原来的getDefaultWebSecurityManager变为dwsm
public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm){
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
//关联UserRealm
securityManager.setRealm(userRealm);
return securityManager;
}
//创建 realm 对象 需要自定义一个类UserRealm
//这里的@Bean是给spring容器添加组件,并且返回类型UserRealm即为组件类型,该组件的id=“userRealm”即方法名
@Bean
public UserRealm userRealm(){
return new UserRealm();
}
}
自定义一个UserRealm继承AuthorizingRealm
//自定义的realm
public class UserRealm extends AuthorizingRealm {
//授权
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
System.out.println("执行了授权doGetAuthorizationInf");
return null;
}
//认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
System.out.println("执行了认证doGetAuthorizationInf");
return null;
}
}
- 4.前端页面
add.html:
add
update.html:
update
index.html:
首页
add
update
- 5.MyController:
@Controller
public class MyController {
//跳转到首页
@RequestMapping({"/", "/index","index.html"})
public String toIndex(Model model){
model.addAttribute("msg","Hello!Shiro!");
return "index";
}
@RequestMapping("/user/add")
public String toAdd() {
return "user/add";
}
@RequestMapping("/user/update")
public String toUpdate() {
return "user/update";
}
}