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+MySQL


代码结构:


权限设置:

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
	<!-- spring-shiro权限管理过滤器,这里的id要等于web.xml中的shiro配置的filter-name -->
	<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
		<!-- 调用自定义授权认证管理器 -->
		<property name="securityManager" ref="securityManager" />
		<!-- 配置登录地址 -->
		<property name="loginUrl" value="/login" />
		<!-- 登录成功后跳转的地址 -->
		<property name="successUrl" value="/home" />
		<!-- 非法访问时,跳转的地址 -->
		<property name="unauthorizedUrl" value="/403" />

		<!-- 自定义filter配置 -->
		<!--  <property name="filters">
			<util:map>
				<entry key="authc">
					<bean class="com.plg.shiro.filter.shiro.UserAuthenticationFilter"/>
				</entry>
			</util:map>
			
			将自定义 的FormAuthenticationFilter注入shiroFilter中
			<map>
				<entry key="authc" value-ref="formAuthenticationFilter" />
			</map>
		</property> -->

		<!-- 配置权限拦截的路径,以及认证方式 -->
		<property name="filterChainDefinitions">
			<value>
				<!-- anon表示此地址不需要任何权限即可访问 -->
				/login = anon
				/logout = anon
				/static/** = anon
				/403 = anon
				/home = anon
				<!-- 所有的请求(除去配置的静态资源请求或请求地址为anon的请求)都要通过登录验证,如果未登录则跳到unauthorizedUrl指定的url -->
				/** = authc
			</value>
		</property>
	</bean>
2.springmvc-servlet.xml,特别注意Shiro内部lifecycle函数的bean的生命周期配置房子springmvc配置文件中,否则在controller上使用shiro的注解就不起作用了。
	<!-- 保证实现了Shiro内部lifecycle函数的bean执行,一定要放在spring-mvc的配置文件中,某则放在Controller层的shiro注解(如@RequiresPermissions等)就不起作用 -->
	<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
	<!-- BEGIN SHIRO对Controller方法级安全控制的AOP支持 -->
	<bean
		class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
		depends-on="lifecycleBeanPostProcessor">
		<property name="proxyTargetClass" value="true" />
	</bean>
-----------------------------------------------------------

系统介绍:

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

登录页面:

登录成功之后:



权限验证失败:

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

登录/验证时序图:





项目git地址

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


到此!




  • 9
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值