C#接口实现自定义的 Token 鉴权过滤器,用于保护 Web API 接口不被未授权用户访问

文章介绍了如何在ASP.NETWebAPI中创建一个BaseApiController,并在App_Start中实现TokenCheckFilter进行自定义身份验证,包括Token值的获取、验证和处理未授权请求。还展示了如何在Login和LoginTest操作中使用Token鉴权。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建一个BaseApiController类,并继承ApiController

 public class BaseApiController : ApiController
 {
     /// <summary>
     /// 构造函数赋值
     /// </summary>
     public BaseApiController()
     {
         TokenValue = HttpContext.Current.Session[LoginID] ?? "";
         HttpContext.Current.Request.Headers.Add("TokenValue", TokenValue.ToString());
     }
     /// <summary>
     /// 数据库上下文
     /// </summary>
     //public WYDBContext db = WYDBContextFactory.GetDbContext();


     /// <summary>
     /// token值 登录后赋值请求api的时候添加到header中
     /// </summary>
     public static object TokenValue { get; set; } = "";


     /// <summary>
     /// 登录者账号
     /// </summary>
     public static string LoginID { get; set; } = "";

 }

二、在web API 自带的App_Start文件夹下创建一个TokenCheckFilter类

using System;
using System.Collections.Generic
JimuReport是一个基于Java的报表工具,它通常用于数据展示和分析。如果你想要在JimuReport中编写一个拦截器来实现自定义Token,你需要按照以下步骤操作: 首先,创建一个实现`JmReportTokenServiceI`接口的类。这个接口通常会包含一些关于验证Token的方法,例如`checkToken()`或者`getTokenInfo()`等。 ```java public interface JmReportTokenServiceI { boolean checkToken(String token); // 检查Token是否有效 Map<String, Object> getTokenInfo(String token); // 获取token对应的信息 } ``` 接下来,在你的拦截器类中,注入这个服务,并覆盖必要的处方法。拦截器一般会放在`ReportFilter`或者其他适合的地方: ```java @Service("yourInterceptorName") public class CustomTokenInterceptor implements ReportFilter { @Autowired private JmReportTokenServiceI tokenService; @Override public void doFilter(ReportContext context) throws Exception { String authToken = context.getRequest().getHeader("Authorization"); // 获取HTTP头的Authorization字段 if (tokenService.checkToken(authToken)) { // 验证Token // Token校验通过,继续执行报告请求 context.proceed(); } else { // Token无效,可以记录日志并返回错误响应 log.error("Unauthorized token"); throw new UnauthorizedException("Invalid token"); } } // 可选:提供额外的处逻辑,比如获取用户信息 protected Map<String, Object> getUserInfoFromToken(String token) { return tokenService.getTokenInfo(token); } } ``` 在应用启动时,记得将你的拦截器注册到Spring框架的拦截器链中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lucky.帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值