package com.txc.ajaxheadersdemo.controller;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTCreationException;
import com.auth0.jwt.interfaces.DecodedJWT;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Controller
public class TestController {
@RequestMapping("/login")
@ResponseBody
public String login(@RequestParam String username, HttpServletResponse response, HttpServletRequest request){
System.out.println("=======login==========="+username);
//创建map存放用户信息
Map<String,Object> map=new HashMap<>();
map.put("userid",1001);
map.put("username",username);
String token=null;
try {
//!@#$%^&123~:是我们使用的签名
Algorithm algorithm = Algorithm.HMAC256("!@#$%^&123~");
token = JWT.create()
.withIssuer("auth0")//角色权限
.withClaim("userinfo",map)
//设置token的过期时间为一个小时
.withExpiresAt(new Date(System.currentTimeMillis()+3600000))
.sign(algorithm);
//将token信息添加到token中
response.addHeader("token",token);
} catch (JWTCreationException exception){
System.out.println("=====程序异常=======");
}
return token;
}
@RequestMapping(value = "/getLoginToken",method = RequestMethod.POST)
public String getLoginToken(@RequestParam("X-Custom-Header1111") String token){
//验证一个token
try{
Algorithm algorithm=Algorithm.HMAC256("!@#$%^&123~");
JWTVerifier verifier=JWT.require(algorithm)
.withIssuer("auth0")
.build();
DecodedJWT jwt=verifier.verify(token);
Map<String,Object> userinfo=jwt.getClaim("userinfo").asMap();
String username=userinfo.get("username").toString();
int userid=Integer.valueOf(userinfo.get("userid").toString());
Date exp=jwt.getExpiresAt();
return username+"==="+userid+"==="+exp;
}catch(Exception e){
e.printStackTrace();
return "校验失败";
}
}
@RequestMapping("/test.do")
@ResponseBody
public String test(){
System.out.println("=====test.do========");
return "恭喜你资源访问成功。";
}
@RequestMapping("/login1")
@ResponseBody
public String login1(@RequestParam String username, HttpServletResponse response, HttpServletRequest request){
System.out.println("=======login==========="+username);
//创建map存放用户信息
Map<String,Object> map=new HashMap<>();
map.put("userid",1001);
map.put("username",username);
String token=null;
try {
//!@#$%^&123~:是我们使用的签名
Algorithm algorithm = Algorithm.HMAC256("!@#$%^&123~");
token = JWT.create()
.withIssuer("auth0")//角色权限
.withClaim("userinfo",map)
//设置token的过期时间为一个小时
.withExpiresAt(new Date(System.currentTimeMillis()+3600000))
.sign(algorithm);
} catch (JWTCreationException exception){
System.out.println("=====程序异常=======");
return "0";//如果返回值为0,表示失败。
}
return "1";//如果返回值为1,表示成功。
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于springboot+jwt+拦截器实现分布式环境下的认证和授权
共97个文件
xml:71个
java:6个
html:6个
0 下载量 123 浏览量
2023-12-13
09:07:06
上传
评论
收藏 223KB RAR 举报
温馨提示
基于springboot+jwt+拦截器实现分布式环境下的认证和授权。
资源推荐
资源详情
资源评论
收起资源包目录
ajaxheadersdemo.rar (97个子文件)
ajaxheadersdemo
ajaxheadersdemo.iml 8KB
pom.xml 2KB
src
test
java
com
txc
ajaxheadersdemo
AjaxheadersdemoApplicationTests.java 233B
main
resources
application.properties 1B
templates
static
show.html 775B
js
axios.js 97KB
jquery-2.1.1.js 251KB
ajax.html 548B
login.html 880B
java
com
txc
ajaxheadersdemo
AjaxheadersdemoApplication.java 346B
controller
TestController.java 4KB
exception
TokenIsNullException.java 191B
config
WebMvcConfig.java 818B
interceptor
LoginInterceptor.java 1KB
.idea
jarRepositories.xml 880B
libraries
Maven__org_hamcrest_hamcrest_2_2.xml 497B
Maven__org_ow2_asm_asm_9_3.xml 458B
Maven__com_jayway_jsonpath_json_path_2_8_0.xml 546B
Maven__org_assertj_assertj_core_3_24_2.xml 542B
Maven__org_junit_jupiter_junit_jupiter_5_9_3.xml 566B
Maven__org_apache_tomcat_embed_tomcat_embed_el_10_1_16.xml 618B
Maven__com_fasterxml_jackson_core_jackson_databind_2_15_3.xml 630B
Maven__org_springframework_spring_beans_6_0_14.xml 574B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_15_3.xml 695B
Maven__net_minidev_accessors_smart_2_4_11.xml 563B
Maven__org_springframework_spring_expression_6_0_14.xml 609B
Maven__org_junit_jupiter_junit_jupiter_api_5_9_3.xml 594B
Maven__com_fasterxml_jackson_core_jackson_core_2_15_3.xml 602B
Maven__org_xmlunit_xmlunit_core_2_9_1.xml 535B
Maven__org_slf4j_slf4j_api_2_0_9.xml 506B
Maven__org_springframework_spring_test_6_0_14.xml 567B
Maven__org_junit_jupiter_junit_jupiter_params_5_9_3.xml 615B
Maven__org_springframework_boot_spring_boot_starter_tomcat_3_1_6.xml 685B
Maven__org_springframework_boot_spring_boot_3_1_6.xml 580B
Maven__net_bytebuddy_byte_buddy_1_14_10.xml 543B
Maven__org_junit_platform_junit_platform_engine_1_9_3.xml 626B
Maven__jakarta_annotation_jakarta_annotation_api_2_1_1.xml 633B
Maven__org_springframework_spring_context_6_0_14.xml 588B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_15_3.xml 651B
Maven__org_apache_logging_log4j_log4j_to_slf4j_2_20_0.xml 608B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_10_1_16.xml 667B
Maven__org_springframework_boot_spring_boot_starter_json_3_1_6.xml 671B
Maven__org_springframework_spring_aop_6_0_14.xml 560B
Maven__org_mockito_mockito_core_5_3_1.xml 535B
Maven__org_springframework_boot_spring_boot_test_autoconfigure_3_1_6.xml 713B
Maven__org_slf4j_jul_to_slf4j_2_0_9.xml 527B
Maven__net_minidev_json_smart_2_4_11.xml 528B
Maven__org_mockito_mockito_junit_jupiter_5_3_1.xml 598B
Maven__org_springframework_boot_spring_boot_starter_web_3_1_6.xml 664B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 700B
Maven__org_springframework_boot_spring_boot_autoconfigure_3_1_6.xml 678B
Maven__org_springframework_spring_jcl_6_0_14.xml 560B
Maven__com_auth0_java_jwt_4_4_0.xml 499B
Maven__org_skyscreamer_jsonassert_1_5_1.xml 537B
Maven__org_springframework_spring_web_6_0_14.xml 560B
Maven__org_junit_jupiter_junit_jupiter_engine_5_9_3.xml 615B
Maven__org_opentest4j_opentest4j_1_2_0.xml 533B
Maven__org_apiguardian_apiguardian_api_1_1_2.xml 572B
Maven__org_springframework_spring_core_6_0_14.xml 567B
Maven__org_objenesis_objenesis_3_3.xml 508B
Maven__org_springframework_spring_webmvc_6_0_14.xml 581B
Maven__org_springframework_boot_spring_boot_starter_3_1_6.xml 636B
Maven__jakarta_xml_bind_jakarta_xml_bind_api_4_0_1.xml 611B
Maven__org_apache_logging_log4j_log4j_api_2_20_0.xml 573B
Maven__org_springframework_boot_spring_boot_starter_logging_3_1_6.xml 692B
Maven__ch_qos_logback_logback_core_1_4_11.xml 554B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_15_3.xml 681B
Maven__io_micrometer_micrometer_observation_1_11_6.xml 620B
Maven__org_springframework_boot_spring_boot_starter_test_3_1_6.xml 671B
Maven__org_yaml_snakeyaml_1_33.xml 495B
Maven__jakarta_activation_jakarta_activation_api_2_1_2.xml 633B
Maven__io_micrometer_micrometer_commons_1_11_6.xml 592B
Maven__org_apache_tomcat_embed_tomcat_embed_core_10_1_16.xml 632B
Maven__org_junit_platform_junit_platform_commons_1_9_3.xml 633B
Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_15_3.xml 736B
Maven__ch_qos_logback_logback_classic_1_4_11.xml 575B
Maven__org_springframework_boot_spring_boot_test_3_1_6.xml 615B
Maven__org_projectlombok_lombok_1_18_30.xml 531B
Maven__net_bytebuddy_byte_buddy_agent_1_14_10.xml 585B
workspace.xml 5KB
misc.xml 464B
compiler.xml 899B
modules.xml 277B
.gitignore 184B
encodings.xml 270B
target
classes
application.properties 1B
static
show.html 772B
js
axios.js 97KB
jquery-2.1.1.js 251KB
ajax.html 548B
login.html 880B
com
txc
ajaxheadersdemo
AjaxheadersdemoApplication.class 780B
controller
TestController.class 6KB
exception
TokenIsNullException.class 413B
config
WebMvcConfig.class 1KB
interceptor
LoginInterceptor.class 3KB
generated-sources
annotations
.gitignore 395B
共 97 条
- 1
资源评论
雾林小妖
- 粉丝: 1w+
- 资源: 90
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (大赛作品)STM32实现的F072RB NUCLEO智能家居控制.zip
- STM32实现的数字示波器源码+数字信号处理教程、配套实例.zip
- 【cookie续续】【cookie续续】【cookie续续】
- 低功耗STM32实现的F411开发板(原理图+PCB源文件+官方例程+驱动等).zip
- 基于stm32实现的 nucleo-L476的智能灯(操作说明+源码).zip
- 基于STM32实现的 NUCLEO板设计彩色LED照明灯(纯cubeMX开发).zip
- 基于STM32实现的 的联合调试侦听设备解决方案(原理图、PCB源文件、调试工具、视频).zip
- 基于STM32实现的 人群定位、调速智能风扇设计(程序、设计报告、视频演示).zip
- 哔哩下载姬(DownKyi)
- 千纬认字app再次更新,增加部首、笔画动画功能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功