当前位置: 首页 > news >正文

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证7)

  本文验证基于请求头中传递token信息的认证方式,webapi项目的控制器类中新建如下函数,仅通过验证的客户端能调用,需要客户端请求在Header中添加’Authorization’: 'Bearer token’的键值对且通过token验证后才能调用。

[Authorize]
[HttpGet]
public async Task<ApiResult> DataTest(string userName)
{ApiResult result = new ApiResult();            result.Msg = "Hello,"+userName;return result;
}

  新增main.html页面,登录页面登录成功后通过设置window.location.href属性跳转到main.html页面,后者中主要功能包括:
  1)从本地sessionStorage中读取并显示当前用户名;
  2)点击按钮能够查看本地token数据(也是从sessionStorage中读取);
  3)目前没看到太好的“”退出登录”方式,就加了个退出按钮,点击后删除sessionStorage的数据,并跳转回登录页面;
  4)输入一段文字,点击“调用服务”按钮,调用后台的DataTest函数并显示返回结果。

  main.html页面的主要js代码如下:

layui.use(['layer', 'form'], function () {var layer = layui.layer;            $ = layui.jquery;$(".userName").html(sessionStorage.getItem("user"));    $("#viewToken").click(function () {layer.msg("当前用户Token为:" + sessionStorage.getItem("token"));});$("#quit").click(function () {layer.confirm('确定要退出吗?', function(index){//用户点击了确认按钮layer.close(index);sessionStorage.removeItem("user");sessionStorage.removeItem("token");window.location.href = "./login.html";}, function(index){//用户点击了取消按钮layer.close(index);});});$("#invokeSrv").click(function () {var urlAddress='https://localhost:7051/Login/DataTest?userName='+$("#inputText").val();$.ajax({type: 'GET',url: urlAddress,  headers: {'Authorization': 'Bearer '+sessionStorage.getItem("token"),  // 自定义的授权头部字段'Content-Type': 'application/json' },                                     success: function (result) {                        if (result.statusCode == 200) {layer.msg(result.msg);}else{layer.msg("调用失败,错误消息为:" + result.msg);}                        },error: function () {layer.msg("调用失败");                        }});});});      

  最后是程序运行效果截图(界面比较丑,没怎么处理,主要是验证功能),
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  如果不登录直接访问main.html,则点击调用服务会因身份验证不通过而调用失败。
在这里插入图片描述

参考文献:
[1]https://www.jianshu.com/p/a2804e72d296
[2]https://blog.csdn.net/sD7O95O/article/details/85043160
[3]https://www.cnblogs.com/qiongkangle/p/13347283.html
[4]https://www.cnblogs.com/xbhp/p/17401507.html
[5]https://www.cnblogs.com/superstar/p/16491428.html
[6]https://blog.csdn.net/weixin_44877917/article/details/140609294
[7]https://blog.csdn.net/qq_40287041/article/details/143368882

http://www.lryc.cn/news/525162.html

相关文章:

  • Ubuntu16.04 安装OpenCV4.5.4 避坑
  • DDD - 整洁架构_解决技术设计困局
  • Python自动化运维:一键掌控服务器的高效之道
  • 数论问题61一一各种进位制
  • Java开发提速秘籍:巧用Apache Commons Lang工具库
  • 使用sql查询excel内容
  • [Python学习日记-78] 基于 TCP 的 socket 开发项目 —— 模拟 SSH 远程执行命令
  • 电子应用设计方案101:智能家庭AI喝水杯系统设计
  • vue学习路线
  • (15)Chainlink Automation(定时任务) 详细介绍及用法
  • 从入门到精通:RabbitMQ的深度探索与实战应用
  • 基于微信小程序高校订餐系统的设计与开发ssm+论文源码调试讲解
  • 【vitePress】基于github快速添加评论功能(giscus)
  • PID 控制算法(二):C 语言实现与应用
  • Git本地搭建
  • ORB-SLAM2源码学习:Initializer.cc⑧: Initializer::CheckRT检验三角化结果
  • leetcode 2239. 找到最接近 0 的数字
  • Rust实现内网穿透工具:从原理到实现
  • 【深度学习】1.深度学习解决问题与应用领域
  • 文档解析:PDF里的复杂表格、少线表格如何还原?
  • 深圳大学-计算机系统(3)-实验三取指和指令译码设计
  • Java Swing 编程全面解析:从 AWT 到 Swing 的进化之路
  • mysql数据库启动出现Plugin ‘FEEDBACK‘ is disabled.问题解决记录
  • 2025年大模型对智能硬件发展的助力与创新创意
  • Tensor 基本操作1 unsqueeze, squeeze, softmax | PyTorch 深度学习实战
  • Python - itertools- pairwise函数的详解
  • Docker可视化管理工具Portainer
  • WPF实战案例 | C# WPF实现大学选课系统
  • leetcode 面试经典 150 题:有效的括号
  • python学opencv|读取图像(三十九 )阈值处理Otsu方法