一、什么是Shiro
Shiro是一个很易用与Java项目的的安全框架,主要提供了提供了认证、授权、加密、会话管理功能。
二、Shiro主要记住哪些
- ShiroFilterFactory Shiro核心类
- SecurityManager 用于管理所有的Subject
- Subject 当前用户操作
- Realms 用于进行权限信息的验证,也是我们需要自己实现的。
三、步骤:
1.pom.xml中添加Shiro依赖
1 | <dependency> |
2.注入ShiroFilterFactory和SecurityManager
1 | /** |
注入ShiroFactory==>SecurityManager==>Realm
Realm是实现权限认证、授权的,所有要自己手动新建这个类
### 3.Realm代码
1 | public class MyShiroRealm extends AuthorizingRealm { |
4.controller层代码
1 | // 登录提交地址和配置文件的登录url一致 |
5.没有权限页面跳转
新建全局异常类1
2
3
4
5
6
7
8
9
public class ExceptionHandle {
// 处理访问方法时权限不足问题 (value = UnauthorizedException.class)
public String handle(Exception e) {
return "<script>alert('没有权限访问!');window.history.back();</script>";
}
}
四、其他
1.获取密文:
1 | Object obj = new SimpleHash("md5", user.getPassword(), ByteSource.Util.bytes(user.getSalt()) , 2); //获取MD5加密后的密文 2是加密次数 |
2.错误页面处理
新建error文件夹,404,500错误会自动找到该页面
springBoot错误,也可以新建error.html视图,也会自动找该页面
3.为什么要用盐
希望即使两个原始密码相同,加密得到的两个字符串也不同。
4.前端怎么传值过来
表单中的参数固定name写法是username、password、rememberMe。