5.6K Star 11.4K Fork 4K

GVPdotNET China / Furion

 / 详情

jwthandler中,怎样将context.Fail默认返回的403状态,改为401状态

已完成
成员
创建于  
2021-06-17 16:04

特别说明:如果 Issue 报告为问题且开发成员回复确认问题之后但三天内都不能得到反馈,则视为无效Issue。

Furion 版本号

哪个版本号?
2.8.9

Web 项目类型

  • WebApi
  • Mvc
  • Razor Pages
  • Blazor Server

描述你的问题

发生了什么?

在JwtHandler中篡改了401状态码

前端页面报net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)
但是Postman单独请求时,却可以正常返回401状态

异常堆栈信息

异常堆栈是什么?

Win调试模式下完全正常,但是。
Docker下报错StatusCode cannot be set because the response has already started


代码或代码仓库

什么代码导致?

JwtHandler中:

public override async Task HandleAsync(AuthorizationHandlerContext context)
    {
        // 常规授权(可以判断不是第三方)
        //var isAuthenticated = context.User.Identity;

        //手机号
        var account = context.User.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value;
        var token = JWTEncryption.GetJwtBearerToken(context.GetCurrentHttpContext());
        var value = await _redis.GetMemberTokenAsync(account);

        if(!string.IsNullOrWhiteSpace(value) && token == value)
        {
            await AuthorizeHandleAsync(context);
        }
        else
        {
            context.Fail();
            await context.GetCurrentHttpContext().Response.WriteAsJsonAsync(new XnRestfulResult<object>
            {
                Code = StatusCodes.Status401Unauthorized,
                Success = false,
                Data = null,
                Message = "401, please LogIn",
                Extras = null,
                Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
            });
        }

    }

数据库信息

  • Sqlite
  • SqlServer
  • Mysql
  • Oracle
  • PGSql
  • Firebird
  • Cosmos

期待结果

期待的结果是?

返回状态手动改为401

评论 (5)

Herbert 创建了任务
Herbert 关联仓库设置为dotNET China/Furion
Herbert 修改了描述
Jerry 修改了描述
Jerry 修改了描述
展开全部操作日志

所以你期待的结果是:前端对401作处理?

Herbert 修改了描述
Herbert 修改了标题
德芙 修改了描述
德芙 修改了描述
德芙 修改了描述
德芙 修改了描述

拿源码测试,Startup 里面:

输入图片说明

200,204 改为 403,401,自行调试 Furion 内置规范化结果

百小僧 任务状态待办的 修改为进行中
百小僧 负责人设置为百小僧
百小僧 添加了
 
优化
标签
百小僧 添加了
 
建议
标签
百小僧 添加了
 
新功能
标签
百小僧 里程碑设置为Furion 2020
百小僧 里程碑Furion 2020 修改为Furion 2021
百小僧 计划截止日期设置为2021-06-18
百小僧 计划开始日期设置为2021-06-17
百小僧 计划截止日期2021-06-18 修改为2021-06-17
百小僧 置顶等级设置为
百小僧 优先级设置为严重
百小僧 通过 dotnetchina/Furion Commit 106e756任务状态进行中 修改为已完成
百小僧 置顶等级 修改为不置顶

同问,有解决吗

这个问题没有解决吗?

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(6)
73073 jerryfox 1661931359 974299 monksoul 1578937227
C#
1
https://gitee.com/dotnetchina/Furion.git
git@gitee.com:dotnetchina/Furion.git
dotnetchina
Furion
Furion

搜索帮助

14c37bed 8189591 565d56ea 8189591