shiro是什么
shiro它是一个安全框架,做身份认证,授权,密码和会话管理
shiro的概念
(1)java安全框架,权限框架
(2)Apache Shiro是一个强大且易用的Java安全框架,执行
身份验证、授权、密码和会话管理
身份验证:登录
授权:验证是否有权限,没有权限就不能访问,有权限就能访问
密码:加密加盐
会话管理:shiro 自己有套会话机制,使用方式类似javaweb session机制
shiro安全框架比较
1.shiro是Apache下面的开源框架,简单易用,轻量级的安全框架,
如果要做项目需要和spring进行整合使用
2.spring Security是spring下面的开源框架,重量级安全框架,配置比较多,和spring进行无缝衔接
shrio小结
shiro他是安全框架,可以做身份认证(登录),授权,密码学和会话管理
shiro的第一个程序
登录认证流程
流程步骤掌握
(1)得到一个SecurityManager对象
DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();defaultSecurityManager.setRealm(myRealm);
//设置到shiro环境SecurityUtils.setSecurityManager(defaultSecurityManager);
(2)通过SecurityManager得到一个Subject主体
Subject subject = SecurityUtils.getSubject();
(3)判断主体是否登录过
如果没有登录过,就进行登录认证
if(!subject.isAuthenticated()){
//登录认证
try {
UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("mm","xxxmm" );
subject.login(usernamePasswordToken);
System.out.println("登录成功");
}catch (UnknownAccountException e){
System.out.println("账号不存在异常");
}catch (IncorrectCredentialsException e){
System.out.println("密码不正确");
}
catch (AuthenticationException e) {
System.out.println("其他认证异常");
e.printStackTrace();
}
}
(4)进入realm里面进行认证
授权流程
必须先登录之后 才能使用授权流程 ,如果没有登录就不行
3 shiro的spring整合
登录认证
步骤
a)前台传入用户名和密码到controller
b)得到主体
SecurityUtils.getSubject()
c)判断主体是否认证过
没有认证 --调用login方法去认证–调用realm的认证代码
如果已经认证–跳转到主页面
登录认证里面 加密加颜
流程:我们告诉shiro 我们使用MD5加密 和加密次数,以及盐值,我们shiro
它会自动把页面的密码进行加密加盐在和数据库密码进行比较
为什么需要授权
为了安全
授权的判断方式
(1)编程式 自己写代码
hasRole
isPerermited
(2)注解式处理权限
(3)标签jsp提供标签来处理 --使用就可以控制(采纳)
当前登录用户,如果有admin这个角色 --角色下面有对应的删除权限 ,显示按钮,否则就不显示该按钮
<shiro:hasRole name=“admin”>
删除
</shiro:hasRole>
授权的使用
如果要测试授权,必须先登录
当我认证通过之后,如果要去访问一个需要授权的页面(permission.jsp)
–判断代码是shiro这个框架自己做
shiro这个框架,就会判断当前该用户是否具备相应的权限
如果有访问权限–让你访问
如果没有访问的权限–跳转未授权的页面
代码写到realm里面 doGetAuthorizationInfo