.netcoreapi忽略转json

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.netcoreapi忽略转json相关的知识,希望对你有一定的参考价值。

参考技术A 一、首先在Net Core中接口返回结果json化需要在Startup配置类中ConfigureServices方法中配置服务设置

复制代码
services.AddControllers(

).AddNewtonsoftJson(options =>

//忽略循环引用
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
//设置时间格式
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
//
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

);
复制代码

忽略某些路由上的过期令牌

【中文标题】忽略某些路由上的过期令牌【英文标题】:Ignore expired tokens on certain routes 【发布时间】:2020-06-21 07:29:26 【问题描述】:

使用 JWT 令牌,我正在为我的 .NET Core API 进行身份验证。我想知道当用户请求某个路由(例如“/refresh”)以刷新过期令牌时,我是否可以告诉我的 API 忽略令牌的到期。我知道可以通过 POST 请求提供令牌来解决它,但我希望能够在我只想识别调用用户时忽略令牌的到期。

我的代码如下所示。目前它适用于 POST 请求,但我希望能够通过标头提供过期令牌。

[AllowAnonymous]
[HttpPost("refresh")]
public async Task<IActionResult> Refresh(RefreshRequest refreshRequest)

    // Validate refresh token
    if (!_tokenService.RefreshTokenValid(refreshRequest.Refresh_Token)) 
        return BadRequest("The request token is not a valid token.");
    

    var tokenHandler = new JwtSecurityTokenHandler();

    // Validate actual token
    if (!tokenHandler.CanReadToken(refreshRequest.Token)) 
        return BadRequest("The JWT token is not a valid token.");
    

    // Get the user from the JWT token
    var userId = _tokenService.GetUserIdFromtoken(refreshRequest.Token);
    var repoUser = await _repo.GetUserById(userId);

    // Map the user, generate a token and send response
    var newToken = _tokenService.GenerateRefreshedJwtToken(repoUser);
    var tokenUser = _mapper.Map(repoUser, new AuthRefreshedTokenUser(newToken));
    return Ok(tokenUser);

【问题讨论】:

AllowAnonymous 将跳过身份验证中间件,无论您是否提供正确的令牌,当前代码有什么问题? AllowAnonymous 完全忽略令牌。这意味着不会识别 ClaimsPrincipal 用户,并且必须手动完成所有操作。这是一个可能的解决方案,但不是比我现在拥有的更好的手动获取令牌的解决方案。 您可以创建另一个身份验证架构并设置为不验证令牌的生命周期,请参阅下面的回复 【参考方案1】:

一种简单的方法是创建另一个身份验证架构并设置为不验证令牌的生命周期:

.AddJwtBearer(options =>

    ...
    options.TokenValidationParameters.ValidateLifetime = false;
    ....

);

并使用[Authorize(AuthenticationSchemes = "schemeName")] 在特定控制器/操作上应用该身份验证方案。

【讨论】:

以上是关于.netcoreapi忽略转json的主要内容,如果未能解决你的问题,请参考以下文章

忽略某些路由上的过期令牌

git忽略文件转

list 转 jsonString 忽略字段

使用 .gitignore来忽略某些文件转

git常见操作--忽略文件以及常用命令转

[转] git忽略已经被提交的文件