首页 > 其他分享 >使用Servlet中的过滤器实现登录权限验证

使用Servlet中的过滤器实现登录权限验证

时间:2023-11-19 13:58:06浏览次数:35  
标签:info String 登录 resp writer jwt 过滤器 权限 Servlet

{

    /**
     * @description:登录过滤校验
     * @author: lijialuo
     * @date: 2023/11/19 13:28
     * @param: [servletRequest, servletResponse, filterChain]
     * @return: void
     **/
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) servletRequest;
        HttpServletResponse resp = (HttpServletResponse) servletResponse;

        //1.获取请求的url
        String url = req.getRequestURL().toString();
        log.info("请求的路径为:{}",url);
        //2.判断url里面是否为登录的路径 login 如果是则放行
        if (url.contains("login")) {
            log.info("登录请求,放行");
            filterChain.doFilter(req,resp);
            return;
        }
        //3.不是登录路径,验证jwt令牌
        //获取jwt令牌
        String jwt = req.getHeader("token");
        //验证有没有token,如果没有,则返回错误信息
        if (!StringUtils.hasLength(jwt)) {
            //没有token
            log.info("该用户没有登录");
            String noLogin = "false";
            //手动转换 对象->json   ---------->阿里巴巴fastJSON
            String s = JSONObject.toJSONString(noLogin);
            PrintWriter writer = resp.getWriter();
            writer.write(s);
            writer.close();
            return;
        }
        //jwt存在,如果解析失败,返回错误结果(未登录)
        try {
            JwtUtils.parseJWT(jwt);
        } catch (Exception e) {
            e.printStackTrace();
            //解析失败
            log.info("解析令牌失败");
            String noLogin = "false";
            String s = JSONObject.toJSONString(noLogin);
            PrintWriter writer = resp.getWriter();
            writer.write(s);
            writer.close();
            return;
        }

        //放行
        log.info("令牌合法,放行");
        filterChain.doFilter(req,resp);
    }
}

 

标签:info,String,登录,resp,writer,jwt,过滤器,权限,Servlet
From: https://www.cnblogs.com/lijialuo/p/17841957.html

相关文章

  • 史上功能最全的Java权限认证框架!
    大家好,我是Java陈序员。权限认证是我们日常开发绕不过的话题,这是因为我们的应用程序需要防护,防止被窜入和攻击。在Java后端开发中,实现权限认证有很多种方案可以选择,一个拦截器、过滤器也许就可以轻松搞定。当然,现在也有很多成熟的框架,供我们选择。轻量的Shiro,Spring家族的......
  • Redis缓存雪崩、击穿、穿透解释及解决方法,缓存预热,布隆过滤器 ,互斥锁
    Redis缓存雪崩、击穿、穿透解释及解决方法,缓存预热,布隆过滤器,互斥锁......
  • win10注册表的备份与恢复;对“未将所有数据都成功写入到注册表中。某些项是由系统或其
    为什么要备份注册表呢?现在网络上的软件下载渠道良莠不齐,一不小心就给你一个全家桶服务,而仅仅是通过控制面板将它们卸载是删不干净的,鬼知道它们在电脑的注册表上留下了什么。所以在从不知名网站下载一些软件之前,对注册表进行备份,若出了什么问题,事后对注册表进行恢复是最便捷的方式了......
  • sql server 创建用户 指定权限
    sqlserver创建用户指定权限     'db_owner'--拥有数据库全部权限,包括删除数据库权限'db_accessadmin'--只给数据库用户创建其他数据库用户的权限,而没有创建登录用户的权限。'db_securityadmin'--可以管理全部权限、对象所有权、角色和角色成员资格'db_ddladmin'......
  • 【平台使用】菜单权限管理
    三级菜单才需要配路由维护权限集【API】维护权限集【按钮】角色分配菜单......
  • dev 新增se权限
    使用情景:使用指令抓取avclog,在对应.te文档下对应添加se权限当untrustedapp_30.te新增以上权限,编译出现unknowntype,则考虑在untrustedapp_all.te下添加se权限以上方法尝试后仍出现以下报错提示;则考虑新增设备节点se权限类型 device/device.te定义tt......
  • 浅谈 RBAC 权限系统设计
    方案设计在实际业务中,权限系统的设计其实可以做到很复杂,但是为了简单起见只保留一些最基本且核心的模块:登录模块:权限平台一般需要靠登录获取用户身份,并通过凭证去请求接口,包括注册功能。系统管理模块:包括用户管理、角色管理、菜单管理(如果菜单是前端控制则可以省略)等功能,是权......
  • 权限控制基础
    从这个有16.2k星星的后台管理系统项目Vuevbenadmin中看看它是如何做的。获取权限码要做权限控制,肯定需要一个code,无论是权限码还是角色码都可以,一般后端会一次性返回,然后全局存储起来就可以了,Vuevbenadmin是在登录成功以后获取并保存到全局的store中:import{defineStore}......
  • 安装 IIS 访问临时文件夹 C:\WINDOWS\TEMP\3C 读取/写入权限 错误: 0x80070005
    在windows中使用命令行方式安装IIS(Web服务器)WindowsServer2022安装IIS报错访问临时文件夹C:\WINDOWS\TEMP\3C读取/写入权限错误:0x80070005,可以使用命令行方式来安装和配置Web服务(IIS)。以下是使用DeploymentImageServicingandManagement(DISM)工具的步骤:1.打......
  • Linux文件权限02
    ACL高级特性最大有效权限mask:使用getfacl,其中mask项就是ACL的最大有效权限注:mask用来指定最大有效权限。系统给用户赋予ACL权限需要和mask的权限逻辑“相与”之后的权限才是用户的真正权限default:继承创建目录dir01,使用setfacl命令给用户增加rwx权限,然后在dir01目录下创建dir0......