思路是这样的,在页面展示中,只显示权限内能使用的功能模块,进入每一个界面都需要拦截器对其进行权限验证,对不能使用的功能使用拦截器进行拦截。

这是主要设计到的三张数据库表格:

这是拦截器:

package com.video.handler;import com.video.model.Admin;
import com.video.model.User;
import com.video.service.AdminLoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;//登录拦截
public class AdminLoginInterceptor implements HandlerInterceptor {@Autowiredprivate AdminLoginService adminLoginService;//验证登录的管理员信息@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("管理员拦截器启动--------------");//从session中获取name的值Object attr  =  request.getSession().getAttribute("admin");//判空处理if(attr == null){request.getRequestDispatcher("/admin/toLogin").forward(request,response);return false;}//获取接口路径StringBuffer requestURL = request.getRequestURL();//取出模块的urlString path = requestURL.toString().replaceAll("//","/");//以“/”转为为字符串数组String[] urls =path.split("/");// http://localhost/toMainString url = urls[2];System.out.println("请求访问路径url:"+url);//从session中获取name的值Admin admin  =  (Admin) attr;Integer power = admin.getPower();//查找该管理员是否具有进入首页功能的权限;int rows = adminLoginService.findAdminPower(url,power);//有的话则放行if(rows>0){System.out.println("访问请求通过");return true;}System.out.println("访问请求失败");//没有则返回登录界面request.getRequestDispatcher("/admin/toLogin").forward(request,response);return false;}}

需要注意的是需要在配置类中将拦截器实例化,使用@Bean,在拦截器初始化之前让类加载

    //使用@Bean在拦截器初始化之前让类加载@Beanpublic AdminLoginInterceptor adminLoginInterceptor() {return new AdminLoginInterceptor();}

下面是整体的配置类文件:

package com.video.config;import com.video.handler.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {//使用@Bean在拦截器初始化之前让类加载@Beanpublic AdminLoginInterceptor adminLoginInterceptor() {return new AdminLoginInterceptor();}/*** 配置静态资源映射*/@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {//就是说 url 中出现 resourceHandler 匹配时,则映射到 location 中去,location 相当于虚拟路径//映射本地文件时,开头必须是 file:/// 开头,表示协议registry.addResourceHandler(resourceHandler).addResourceLocations("file:///" + location);}/*** 配置用户、管理员拦截器*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {//注册用户拦截器registry.addInterceptor(new UserLoginInterceptor()).addPathPatterns("/toIndex");//管理员拦截器registry.addInterceptor(adminLoginInterceptor()).addPathPatterns("/toMain","/userSet/**","/adminHome/**","/adminSet/**","/ban/**","/userAction/**");}
}

页面导航条展示:

        <ul class="layui-nav layui-nav-tree" lay-shrink="all" lay-filter="test"><li th:if="${firstModuleIds.contains('1')}" class="layui-nav-item layui-nav-itemed"><a class="" href="javascript:void(0)" onclick="toAdminHome()"><i class="layui-icon layui-icon-home"></i><span>首页</span></a></li><li th:if="${firstModuleIds.contains('2')}" class="layui-nav-item"><a class="" href="javascript:void(0)"><i class="layui-icon layui-icon-user"></i><span>用户管理</span></a><dl class="layui-nav-child"><dd><a href="javascript:void(0)" onclick="toUserAction()"><i class="layui-icon layui-icon-right"></i><span>活动情况</span></a></dd><dd><a href="javascript:void(0)" onclick="toUserPage()"><i class="layui-icon layui-icon-right"></i><span>基本信息</span></a></dd></dl></li><li th:if="${firstModuleIds.contains('3')}" class="layui-nav-item"><a href="javascript:;"><i class="layui-icon layui-icon-username"></i><span>管理员管理</span></a><dl class="layui-nav-child"><dd><a href="javascript:void(0)" onclick="toAdminPage()"><i class="layui-icon layui-icon-right"></i><span>管理员列表</span></a></dd><dd><a href="javascript:void(0)" onclick="toUserPage()"><i class="layui-icon layui-icon-right"></i><span>权限管理</span></a></dd></dl></li><li th:if="${firstModuleIds.contains('4')}" class="layui-nav-item"><a href="javascript:;"><i class="layui-icon layui-icon-video"></i><span>视频管理</span></a><dl class="layui-nav-child"><dd><a href="javascript:void(0)" onclick="toAdminPage()"><i class="layui-icon layui-icon-right"></i><span>视频列表</span></a></dd><dd><a href="javascript:void(0)" onclick="toUserPage()"><i class="layui-icon layui-icon-right"></i><span>视频类型</span></a></dd></dl></li><li th:if="${firstModuleIds.contains('5')}" class="layui-nav-item"><a href="javascript:;"><i class="layui-icon layui-icon-form"></i><span>试题管理</span></a><dl class="layui-nav-child"><dd><a href="javascript:void(0)" onclick="toAdminPage()"><i class="layui-icon layui-icon-right"></i><span>试题列表</span></a></dd><dd><a href="javascript:void(0)" onclick="toUserPage()"><i class="layui-icon layui-icon-right"></i><span>试题类型</span></a></dd></dl></li><li th:if="${firstModuleIds.contains('6')}" class="layui-nav-item"><a href="javascript:;"><i class="layui-icon layui-icon-dialogue"></i><span>评论区管理</span></a></li><li th:if="${firstModuleIds.contains('7')}" class="layui-nav-item"><a href="javascript:;"><i class="layui-icon layui-icon-upload-drag"></i><span>上传管理</span></a><dl class="layui-nav-child"><dd><a href="javascript:void(0)" onclick="toAdminPage()"><i class="layui-icon layui-icon-right"></i><span>视频审核</span></a></dd><dd><a href="javascript:void(0)" onclick="toUserPage()"><i class="layui-icon layui-icon-right"></i><span>试题审核</span></a></dd></dl></li><li th:if="${firstModuleIds.contains('8')}" class="layui-nav-item"><a href="javascript:;"><i class="layui-icon layui-icon-delete"></i><span>封号管理</span></a><dl class="layui-nav-child"><dd><a href="javascript:void(0)" onclick="toBanUser()"><i class="layui-icon layui-icon-right"></i><span>违规用户</span></a></dd><dd><a href="javascript:void(0)" onclick="toUserPage()"><i class="layui-icon layui-icon-right"></i><span>违规视频</span></a></dd></dl></li></ul>

到页面的控制层:

    @RequestMapping("/toMain")public String toMain(HttpServletRequest request, Model model){HttpSession session = request.getSession();Admin admin = (Admin) session.getAttribute("admin");Integer power = admin.getPower();//获取模块id字符串List<String> firstModuleIdList = adminLoginService.showFirstModuleIdList(power);model.addAttribute("firstModuleIds",firstModuleIdList.toString());model.addAttribute("admin",admin);return "manage/main";}

如此便结束了。

springboot拦截器实现管理员权限控制功能相关推荐

  1. springboot + 拦截器 + 注解 实现自定义权限验证

    springboot + 拦截器 + 注解 实现自定义权限验证 最近用到一种前端模板技术:jtwig,在权限控制上没有用springSecurity.因此用拦截器和注解结合实现了权限控制. 1.1 定 ...

  2. 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener

    =================6.SpringBoot拦截器实战和 Servlet3.0自定义Filter.Listener ============ 1.深入SpringBoot2.x过滤器Fi ...

  3. SpringBoot拦截器与过滤器

    一.拦截器与过滤器 在讲Spring boot之前,我们先了解一下过滤器和拦截器.这两者在功能方面很类似,但是在具体技术实现方面,差距还是比较大的.在分析两者的区别之前,我们先理解一下AOP的概念,A ...

  4. springboot拦截器 跳过_springboot创建拦截器过程图解

    springboot创建拦截器过程图解 这篇文章主要介绍了springboot创建拦截器过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一. ...

  5. 拦截器,利用拦截器进行登陆权限控制

    拦截器,登录权限控制demo 1. 拦截器demo 2. 登录权限控制 地址: https://github.com/sevenyoungairye/spring-mvc-interceptor 1. ...

  6. springboot拦截器与过滤器详解

    前言 不管是传统的ssm项目,还是springboot项目,拦截器和过滤器在项目开发中都离不开,比如说对于ssm框架类的项目来说,许多登录逻辑的前置校验,黑白名单的检查,以及部分请求的数据分析等依然需 ...

  7. SpringBoot拦截器配置

    SpringBoot拦截器配置 自定义拦截器: com.example.mybatis2018.interceptor.MyInterCeptor package com.example.mybati ...

  8. Springboot 拦截器链 - 加载拦截器

    Springboot 拦截器链 - 加载拦截器 1.创建拦截器 // 创建拦截器需要实现 HandlerInterceptor 接口 @Slf4j public class HandleInterce ...

  9. Springboot拦截器实现IP黑名单

    Springboot拦截器实现IP黑名单 一·业务场景和需要实现的功能 以redis作为IP存储地址实现.业务场景:针对秒杀活动或者常规电商业务场景等,防止恶意脚本不停的刷接口.实现功能:写一个拦截器 ...

最新文章

  1. 云计算服务在小企业中的作用?
  2. 多线程下的HashMap竟然绕环了
  3. 在centos和redhat上安装docker
  4. Asp.NET Core 中如何加密 Configuration ?
  5. win10无法更改计算机设置,Win10“无法保存ip设置,请检查一个或多个设置并重试”的解决方法...
  6. vue基础入门-应用 组件实例
  7. Java集合sort()
  8. unity, itween, closed path
  9. 进阶10 补充知识点
  10. Windows中redis设置密码
  11. 浏览器劫持(病毒)事件处置
  12. Merriam-Webster‘s Vocabular Builder ( BELL )
  13. word文件打开之后不能编辑是怎么回事
  14. Error response from daemon: Container 2c6d35b44a9862c63a6caf11a5622a33fe27979e12e51f9bd96f8dad98521c
  15. 云服务器是什么,怎么用,能干什么?
  16. 1.2 量产源码加密方法
  17. gepc 骨架图算法Graph Embedded Pose Clustering
  18. ios中位置权限_iOS 13中的位置权限
  19. 数字政府案例|广东省数据资源一网共享平台案例
  20. 关于物联网卡 你了解多少呢?

热门文章

  1. ssh-keygen ssh-add
  2. 新华三联手厦门巨龙打造新型警务云
  3. 智慧农业成为发展道路,充分发挥智能化,解放人力
  4. 支付宝还信用卡开始收费“免费午餐时代”结束了?
  5. 【Java -- 算法】分治算法、动态规划、回溯法、贪心算法
  6. 深入理解二维码生成尺寸
  7. CSS3多重背景结合动画打造会飘动的热气球
  8. android 视频分段录制,短视频录制,分段,回删,美颜,时长限制,分辨率,码率,压缩
  9. Retinoic acid PEG Mal,RA-PEG-Maleimide,维甲酸PEG马来酰亚胺,聚乙二醇化视黄酸提供更好的水溶性
  10. asp按时间自动递增编号_Excel自动填充日期与每次递增3分钟的时间且批量生成编号,用快捷键填充当前日期...