SSM框架下实现权限管理(附源码)

具体思路:配置三张表,分别是角色表,权限表和角色权限对应表。后端配置一个全局拦截器,在拦截每一次请求时,去查表里该用户对应的角色权限是否存在,如果存在就通过,不存在就拒绝并提示。


一. 设计数据库表结构

  • 角色表

  • 权限表

  • 角色权限对应表


二. 配置全局拦截器

AllInterceptor.java

public class AllInterceptor implements HandlerInterceptor {
	
	/**
	 * 角色对应权限表的service
	 */
	@Autowired
	private MenuService menuService;
	
	/**
	 * 权限表的service
	 */
	@Autowired
	private UrlService urlService;
	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
			Object handler) throws Exception {
		// 得到请求地址
        String url = request.getRequestURI();
		HttpSession session = request.getSession();
		String projectName = "/CustomerSystem";
		// 去除请求前缀文件名 (可以去也可以不去,看你主要的请求长什么样和权限表里存的地址)
        url = url.substring(projectName.length(), url.length());
		url_info uInfo = this.urlService.selectUrl(url);
		if(uInfo != null){
			menu_info mInfo = new menu_info();
			mInfo.setType(Integer.parseInt((String)session.getAttribute("type")) + 1);
			mInfo.setUrlId(uInfo.getId());
			int a = this.menuService.selectMenu(mInfo);
			// 有该权限直接通过
            if(a > 0){
				return true;
			}
            // 没有该权限就提示并跳转到登录页面
			session.setAttribute("msg",
					"<script type='text/javascript'>alert('抱歉,您尚未有此功能权限!')</script>");
			request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
			return false;
		}
        // 查不到此地址,直接返回提示并跳转到登录页面
		session.setAttribute("msg",
				"<script type='text/javascript'>alert('抱歉,您尚未有此功能权限!')</script>");
		request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
		return false;
	}
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response,
			Object handler, ModelAndView model) throws Exception {
	}
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
			Object handler, Exception ex)
			throws Exception {
	}
}

在springMVC配置文件里声明这个全局拦截器

springmvc-config.xml

<!-- 配置拦截器 -->
<mvc:interceptors>
	<mvc:interceptor>
		<mvc:mapping path="/**"/>
        <!-- 配置不被拦截的路径 -->
		<mvc:exclude-mapping path="/cus_login.action"/>
		<mvc:exclude-mapping path="/cus_checklogin.action"/>
		<mvc:exclude-mapping path="/cus_exit.action"/>
        <!-- 把拦截器注入到spring容器中 -->
		<bean class="com.itheima.core.interceptor.CustomerAllInterceptor"></bean>
	</mvc:interceptor>
</mvc:interceptors>

至此,权限管理就已经完成了。


三. 下面是我设计完成的校园选课系统里的权限管理模块的页面

项目的GitHub地址,点击前往

欢迎大家前往,给个star。

首页:

登录后的页面

管理员登录后的权限管理页面

 

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值