学习shiro的重点是认证和授权10.09

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值