博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shiro基础功能之入门介绍
阅读量:6980 次
发布时间:2019-06-27

本文共 4882 字,大约阅读时间需要 16 分钟。

任何介绍都不如官网来的实在:

本文仅是介绍shiro的简单入门,配置说明

1、mavn依赖

org.apache.shiro
shiro-core
1.2.3
com.mchange
c3p0
0.9.5.2
commons-logging
commons-logging
1.2

2、配置文件

shiro.ini

[users]wugong=111111admin=111111

jdbc_realm.ini

[main]jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealmdataSource=com.mchange.v2.c3p0.ComboPooledDataSourcedataSource.driverClass=com.mysql.jdbc.DriverdataSource.jdbcUrl=jdbc:mysql://192.168.1.148:3306/vipdataSource.user=rootdataSource.password=rootjdbcRealm.dataSource=$dataSourcesecurityManager.realms=$jdbcRealm

shiro_role.ini

[users]wugong=111111,admin,superadmin=111111,adminsuper=111111,superjava1234=111111,role1,role2jack=111111,role1

shiro_permission.ini

[users]wugong=111111,admin,superadmin=111111,adminsuper=111111,super[roles]admin=user:selectsuper=user:add,user:update,user:delete

3、测试

shiro.ini对应的测试

@Testpublic void shiroHello(){    Factory
factory = new IniSecurityManagerFactory("classpath:shiro/shiro.ini"); SecurityManager securityManager = factory.getInstance(); SecurityUtils.setSecurityManager(securityManager); Subject currentUser = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken("wugong","111111"); try { currentUser.login(token); System.out.println("身份认证成功"); } catch (AuthenticationException e) { e.printStackTrace(); } currentUser.logout(); System.out.println("已经退出");}

jdbc_realm.ini

@Testpublic void shiroJdbcTest(){    //    Subject currentUser = ShiroUtil.login("classpath:shiro/jdbc_realm.ini","wugong","123456");}

shiro_role.ini

说明:#shiro功能演示的数据库 #如果使用jdbc_realm功能,则必须要保证数据库中存在 users表,并且该表中必须要存在userName password字段

#shiro功能演示的数据库#如果使用jdbc_realm功能,则必须要保证数据库中存在 users表,并且该表中必须要存在userName password字段-- ------------------------------ Table structure for users-- ----------------------------DROP TABLE IF EXISTS `users`;CREATE TABLE `users` (  `id` bigint(20) NOT NULL AUTO_INCREMENT,  `userName` varchar(200) DEFAULT NULL,  `password` varchar(100) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;-- ------------------------------ Records of users-- ----------------------------INSERT INTO `users` VALUES ('1', 'wugong', '123456');
private static String shiroIniPath = "classpath:shiro/shiro_role.ini";    @Test    public void shiroRoleTest() {//        shiroRoleHasRole("wugong","111111","admin");        shiroRoleHasRoles("wugong", "111111", "admin", "super", "no");        shiroRoleHasAllRoles("wugong", "111111", "admin", "super", "no");        shiroRoleHasAllRoles("wugong", "111111", "admin", "super");    }    private void shiroRoleHasRole(String userName, String password, String role) {        Subject currentUser = ShiroUtil.login(shiroIniPath, userName, password);        System.out.println(currentUser.hasRole(role) ? (userName + "账号有" + role + "权限") : (userName + "账号没有" + role + "权限"));    }    /**     * 多个role验证     *     * @Author wugong     * @Date 2018/2/26 10:16     * @Modify if true,please enter your name or update time     * @params     */    private void shiroRoleHasRoles(String userName, String password, String... roles) {        Subject currentUser = ShiroUtil.login(shiroIniPath, userName, password);        List
roleList = Arrays.asList(roles); boolean results[] = currentUser.hasRoles(roleList); for (int i = 0; i < results.length; i++) { System.out.println(results[i] ? (userName + "账号有" + roleList.get(i) + "权限") : (userName + "账号没有" + roleList.get(i) + "权限")); } } /** * 全部权限的验证 * * @Author wugong * @Date 2018/2/26 10:28 * @Modify if true,please enter your name or update time * @params */ private void shiroRoleHasAllRoles(String userName, String password, String... roles) { Subject currentUser = ShiroUtil.login(shiroIniPath, userName, password); StringBuffer roleStr = new StringBuffer(); for (int i = 0; i < roles.length; i++) { String role = roles[i]; roleStr.append(role); if (i

shiro_permission.ini

下载地址:

项目下载地址: 密码:k2ba

本项目首次搭建是用于ssm简单功能1、ssm使用的数据库配置    jdbc.properties    1.1、ssm包含基本的数据库表CRUD    1.2、包含aop事务    1.3、自定义aop controller方法拦截        com.jie.common.OperationLogger        com.jie.common.SysLogAspect        com.jie.common.ClassParam    1.4、mybatis的一对多、一对一简单使用说明2、shiro入门级使用教程使用的数据库配置    jdbc_realm.ini    2.1、身份认证        2.1、读取配置的简单使用        例子:com.jie.shiro.ShiroHello.shiroHello        2.2、数据库用户读取 Realm&JDBC Reaml        例子:com.jie.shiro.ShiroJdbcTest    2.2、权限认证(授权)        2.2.1、编程式授权            2.2.1.1 基于角色的访问控制            2.2.1.2 基于权限的访问控制

转载于:https://my.oschina.net/wugong/blog/1624078

你可能感兴趣的文章
日志分析工具splunt
查看>>
元素宽高的获取
查看>>
SQLSERVER存储过程基本语法使用
查看>>
sql server时间转换
查看>>
CDH大数据集群安全风险汇总
查看>>
数据结构实验之链表一:顺序建立链表
查看>>
docker Rails Permission denied @ dir_s_mkdir
查看>>
【二分答案】【最短路】bzoj1614 [Usaco2007 Jan]Telephone Lines架设电话线
查看>>
【贪心】Google Code Jam Round 1A 2018 Waffle Choppers
查看>>
【转载】【贪心】各种覆盖问题
查看>>
HDU 6051 - If the starlight never fade | 2017 Multi-University Training Contest 2
查看>>
insert into与insert ignore以及replace into的区别
查看>>
【网络流24题】最小路径覆盖问题
查看>>
java分享第五天(数组)
查看>>
数组与纠结的排序篇
查看>>
Linux命令-安装zip和unzip命令
查看>>
day03-字符编码与转换
查看>>
JS+CSS控制左右切换鼠标可控的无缝图片滚动代码
查看>>
C# 实现HTML转换成图片的方法
查看>>
访问本班同学的博客
查看>>