springmvc+mybatis+shiro简单权限菜单管理实例

       本文介绍一个简单的权限管理系统,采用springmvc+mybatis+shiro+MySQL,前端主要是用了JSP+jquery框架。springMVC、shiro、mybatis这些,外面的资料很多,这里就不解释了。项目提供源码,可以运行。

-----------------------------------------------------------

数据库设计

om_user:用户表。
om_role:角色表。
user_role:用户-角色关系表,一个用户可以拥有多个角色,一个角色可以对应多个用户。
om_permis:权限表。
role_permis:角色-权限关系表,一个角色可以对应多个权限,一个权限可以被多个角色拥有。
om_menu:菜单表,菜单和权限一一对应,其实菜单就是权限的具体表现。

数据库设计模型图:

springmvc+mybatis+shiro简单权限菜单管理实例_第1张图片
-----------------------------------------------------------

后台部分:

springMVC+mybatis+MySQL


代码结构:

springmvc+mybatis+shiro简单权限菜单管理实例_第2张图片

权限设置:

MenuController.java中,菜单url上都有@RequiresPermissions注解,如人事部菜单的注解为:@RequiresPermissions("personnel_department"),表示登录用户必须拥有"personnel_department"这个权限编码才能访问
	/**
	 * 人事部页面
	 * 
	 * @return
	 */
	@RequiresPermissions("personnel_department")
	@RequestMapping("personnel_department")
	public String personnelDepartment(HttpServletRequest request) {
		logger.info("============人事部=============");
		return "menu/personnel_department";
	}


配置说明:

1.shiro配置文件:beans-shiro.xml
	
	
		
		
		
		
		
		
		
		

		
		

		
		
			
				
				/login = anon
				/logout = anon
				/static/** = anon
				/403 = anon
				/home = anon
				
				/** = authc
			
		
	
2.springmvc-servlet.xml,特别注意Shiro内部lifecycle函数的bean的生命周期配置房子springmvc配置文件中,否则在controller上使用shiro的注解就不起作用了。
	
	
	
	
		
	
-----------------------------------------------------------

系统介绍:

 系统预设了三个用户(登录密码为:123456),对应的三个角色和若干权限。
用户:super_admin > middle_admin > common_admin
角色:super_admin_role > middle_admin_role > common_admin_role

登录页面:
springmvc+mybatis+shiro简单权限菜单管理实例_第3张图片

登录成功之后:


springmvc+mybatis+shiro简单权限菜单管理实例_第4张图片

权限验证失败:

  用户名/密码错误或者访问了没有权限验证的页面时,如上图,middle_admin用户没有权限访问人事部页面的权限,但是在登录成功后,输入人事部页面的url:http://127.0.0.1:8080/springmvc-mybatis-shiro/menu/personnel_department
springmvc+mybatis+shiro简单权限菜单管理实例_第5张图片

登录/验证时序图:

springmvc+mybatis+shiro简单权限菜单管理实例_第6张图片



项目git地址

https://gitee.com/plg17/springmvc-mybatis-shiro.git


到此!




你可能感兴趣的:(shiro)