首页 > 其他分享 >登录认证-完成(拦截器)

登录认证-完成(拦截器)

时间:2024-01-29 20:11:08浏览次数:22  
标签:拦截器 登录 springframework 认证 token org import com public

//JWT令牌生成,工具类
package com.di.bigevent.utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;

import java.util.Date;
import java.util.Map;

public class JwtUtil {

    private static final String KEY = "itheima";
    
    //接收业务数据,生成token并返回
    public static String genToken(Map<String, Object> claims) {
        return JWT.create()
                .withClaim("claims", claims)
                .withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 12))
                .sign(Algorithm.HMAC256(KEY));
    }

    //接收token,验证token,并返回业务数据
    public static Map<String, Object> parseToken(String token) {
        return JWT.require(Algorithm.HMAC256(KEY))
                .build()
                .verify(token)
                .getClaim("claims")
                .asMap();
    }

}
//登录拦截器类
package com.di.bigevent.interceptors;

import com.di.bigevent.utils.JwtUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import java.util.Map;

@Component
public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //令牌验证
        String token = request.getHeader("Authorization");

        try{
            Map<String,Object> claims = JwtUtil.parseToken(token);
            //放行
            return true;
        }
        catch(Exception e){
            response.setStatus(401);
            //不放行
            return false;
        }
    }
}
//配置类
package com.di.bigevent.config;

import com.di.bigevent.interceptors.LoginInterceptor;
import org.aopalliance.intercept.Interceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    private LoginInterceptor loginInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
       registry.addInterceptor(loginInterceptor).excludePathPatterns("/user/login","/user/register");
    }
}

 

标签:拦截器,登录,springframework,认证,token,org,import,com,public
From: https://www.cnblogs.com/muzhaodi/p/17995241

相关文章

  • 每日一练 | 华为认证真题练习Day173
    1、关于OSPF的AS-External-LSA中LSA头部信息描述错误的是:A.LinkStateID表示目的网络地址。B.AdvertisingRouter表示ASBR的RouterID。C.Netmask表示目的网段的网络掩码。D.FORWARDINGADDRESS永远为0.0.0.02、下面关于EGP和IGP描述错误的是A.IGP是运行于AS内部的路由协......
  • 美多商城用户注册-账号登录-多账号登录-首页用户名展示-退出登录-判断用户是否登录-9
    1.单用户名登录逻辑分析2.用户名登录接口设计3.用户名登录接口定义,后端代码需要在users中的views视图中添加,前端login.js login.html添加到对应的目录中然后添加子路由  re_path(r'^login/$',views.LoginView.as_view(),name='login'),classLoginView(View):"""......
  • 保温杯到欧洲需要哪些认证
    保温杯出口欧洲需要做CE认证保温杯CE认证的流程:1.申请咨询:(1)填写申请表(2)申请公司信息表(3)提供保温杯产品资料。2.费用报价:根据所提供的资料确定执行指令标准及相关测试项目给客户以合理的报价。3.客户付款:申请人确认报价后,签订立案申请表及服务协议并交付收款。4.工厂审核及测试:根据......
  • 宠物玩具到欧盟需要办理CE认证吗
    宠物玩具到欧盟市场是否需要办理宠物玩具CE认证?答案是肯定的,是需要办理宠物玩具CE认证的EN71测试,下面给大家介绍EN71测试:      EN71是欧盟国家强制执行的标准,针对为14岁以下的儿童设计的玩具。其意义是通过EN71标准对进入欧洲市场的玩具产品进行技术规范,从而减少或避免......
  • 唇膏需要办理什么认证?
    需要办理MSDS,MSDS是什么?MSDS的英文全称为MaterialSafetyDataSheet——直译为“材料安全数据表”。由于化学品运输基本都需要提供MSDS报告,MSDS报告基本都是针对化学品的,因此也叫做“化学品安全技术说明书”或“化学品安全说明书”或“化学品安全数据说明书”叫法不同,实质一样。M......
  • 古诗文网模拟登录
    古诗文网模拟登陆(含验证码识别)一、首先我们需要进如未登录页面(https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx)url='https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'获得以上内容(注意:需要......
  • 美国站电热水壶需要做什么认证
    美国站电热水壶要做FCC认证FCC认证全称是FederalCommunicationsCommission,于1934年由COMMUNICATIONACT建立是美国政府的一个独立机构,直接对国会负责。FCC通过控制无线电广播、电视、电信、电缆来协调国内和国际的通信。涉及美国50多个州、哥伦比亚以及美国所属地区为确保与生命财......
  • 利用Mybatis拦截器实现自定义的ID自增器
    原生的Mybatis框架是没有ID自增器,但例如国产的MybatisPlus却是支持,不过,MybatisPlus却是缺少了自定属性的填充;例如:我们需要自定义填充一些属性,updateDate、createDate等,这时MybatisPlus自带的ID自增器就无法满足需求;这种时候我们就需要自定义的ID增加器,可以自定义ID增长策略同时......
  • go中间件实现登录验证
    一、概述在java中可以使用过滤器、拦截器实现登录验证(验证token的有效性、判断哪些路径需要登录、哪些路径不需要登录)等等的一些公共性的验证操作。go语言中有没有类似的东西呢,答案是有的,go语言中可以使用中间件来完成这个操作。接下来使用gin+中间件的形式来验证t......
  • 注册和登录后端逻辑
    注册逻辑:用户在前端输入账户和密码、以及校验码(todo)校验用户的账户、密码、校验密码,是否符合要求非空账户长度不小于4位密码就不小于8位账户不能重复账户不包含特殊字符密码和校验密码相同对密码进行加密(密码千万不要直接以明文存储到数据库中)向数据库插入用户数......