您现在的位置是:首页 > 后台技术 > JavaJava
shiro学习(图文)
第十三双眼睛2021-01-07【Java】人已围观
简介Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序
shiro框架入门
1创建一个maven项目,加入如下依赖
2在项目中创建如下文件shiro.ini
3编写一个Java类
认证成功:

认证失败

使用jdbcRealm
在项目中创建如下配置文件
数据库的表名必须为users
而且数据库中的字段必须为userName和password
代码的话,改掉这一行即可
最终结果和上面一样
授权
编程式授权
基于角色的授权
如果登录主体有user角色,就会返回true,程序中可以根据true或者false做处理
判断登录主体是否有如下角色,返回结果是一个数组,数组中的结果和角色一一对应。
判断登录主体是否有指定的所有角色,如果有则返回ture,如果没有则返回false.
check方法,和上面不同的是,如果有某个角色,则不会报错,如果没有,则会报错。
和上面一样,判断登录主体是否有指定的角色,如果有,则正常向下执行,如果没有,则报错
基于权限的授权
如果有指定的权限,则返回true,如果没有则返回false.
返回一个数组,数组中的元素和权限列表中的元素一一对应
如果有指定的所有权限,则返回ture,如果没有,则返回false.
也有subject.checkXXX方法,和上面的一样。
1创建一个maven项目,加入如下依赖
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.4</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.12</version> </dependency> |
[users] zyb=123456 zyt=654321 |
public static void main(String[] args) { String path = "classpath:shiro.ini"; Factory<SecurityManager> factory = new IniSecurityManagerFactory(path); SecurityManager instance = factory.getInstance(); SecurityUtils.setSecurityManager(instance); Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken("zyb", "123456"); try{ subject.login(token); System.out.println("身份认证成功"); }catch(AuthenticationException e){ e.printStackTrace(); System.out.println("身份认证失败"); } subject.logout(); } |

认证失败

使用jdbcRealm
在项目中创建如下配置文件
[main] jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm dataSource=com.alibaba.druid.pool.DruidDataSource dataSource.url=jdbc:mysql://localhost:3306/db_shiro dataSource.driverClassName=com.mysql.jdbc.Driver dataSource.username=root dataSource.password=123456 jdbcRealm.dataSource=$dataSource securityManager.realms=$jdbcRealm |
而且数据库中的字段必须为userName和password
代码的话,改掉这一行即可
String path = "classpath:jdbc_realm.ini"; |
授权
[users] #用户名对应的密码和角色 zyb=123456,admin zyt=654321,user [roles] #角色对应的权限 admin=select,insert,update,delete user=select |
编程式授权
基于角色的授权
subject.hasRole("user"); |
subject.hasRoles(list); |
subject.hasAllRoles(allRole); |
subject.checkRole("user"); |
subject.checkRoles(roles); |
基于权限的授权
boolean permitted = subject.isPermitted("add"); |
subject.isPermitted(permissions); |
subject.isPermittedAll(permissions); |
也有subject.checkXXX方法,和上面的一样。
Tags:
很赞哦! ()
上一篇:redis类型转换异常(图文)