任何介绍都不如官网来的实在:
本文仅是介绍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(){ Factoryfactory = 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); ListroleList = 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 基于权限的访问控制