首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Asp.NET Core3.0API控制器中未使用Authorize修饰方法时,User.Identity.Name使用JWT为空

在Asp.NET Core 3.0的API控制器中,当未使用Authorize修饰方法时,User.Identity.Name使用JWT为空的问题可能是因为控制器未添加身份验证中间件或者未正确配置JWT身份验证。

解决该问题的步骤如下:

  1. 确保在Startup.cs文件的ConfigureServices方法中添加了身份验证服务的配置。可以使用AddAuthentication和AddJwtBearer方法来添加JWT身份验证,代码示例如下:
代码语言:txt
复制
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidateLifetime = true,
            ValidateIssuerSigningKey = true,
            ValidIssuer = "your-issuer",
            ValidAudience = "your-audience",
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secret-key"))
        };
    });
  1. 在Startup.cs文件的Configure方法中添加身份验证中间件。确保在app.UseRouting之前调用app.UseAuthentication()和app.UseAuthorization()方法,代码示例如下:
代码语言:txt
复制
app.UseAuthentication();
app.UseAuthorization();

app.UseRouting();

// 其他中间件配置
  1. 确保在控制器的方法中使用Authorize修饰,以要求用户进行身份验证。示例如下:
代码语言:txt
复制
[Authorize]
[ApiController]
[Route("api/[controller]")]
public class MyController : ControllerBase
{
    [HttpGet]
    public IActionResult Get()
    {
        var userName = User.Identity.Name;
        // 其他逻辑
    }
}

这样,当请求未携带有效的JWT令牌或者令牌验证失败时,API将返回401 Unauthorized错误。

对于腾讯云相关产品推荐,可以考虑使用腾讯云的身份认证服务(CAM)、API网关、云函数(SCF)等来实现身份验证和授权功能。具体可以参考以下链接:

  1. 腾讯云身份认证服务(CAM)
  2. 腾讯云API网关
  3. 腾讯云云函数(SCF)

希望以上内容能帮助到您!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET Core Authentication系列(二)实现认证、登录和注销

ASP.NET Core应用的认证实现在一个名为AuthenticationMiddleware的中间件,该中间件处理分发给它的请求时会按照指定的 认证方案(Authentication Scheme...; }); // ... } 登录 接下来实现登录方法,常见是使用“用户名+密码”,这里使用一个静态字典来模拟用户表。...调用HttpContext.SignInAsync登录,其中认证方案CookieAuthenticationDefaults.AuthenticationScheme,与配置一致。...,只需要在Action上加上特性[Authorize]: [Authorize] public IActionResult Index() { return View(); } 登录会跳转到/...Core 用最简单的方式ASP.NET Core应用实现认证、登录和注销 Use cookie authentication without ASP.NET Core Identity

3.3K20
  • Node.js-具有示例API的基于角色的授权教程

    使用Node.js构建的教程 其他可用版本: ASP.NET: ASP.NET Core 3.1, ASP.NET Core 2.2 本教程,我们将通过一个简单的示例介绍如何在JavaScript...该示例基于我最近发布的另一篇教程,该教程侧重于Node.jsJWT身份验证,此版本已扩展JWT身份验证的基础上包括基于角色的授权/访问控制。...Node.js Auth用户服务 路径:/users/user.service.js 用户服务包含用于验证用户凭据并返回JWT令牌的方法,用于应用程序获取所有用户的方法以及用于通过id获取单个用户的方法...路径:/users/users.controller.js 用户控制器api定义了所有用户路由,路由定义文件顶部分组在一起,并且路由实现在下面。...重要说明:api使用“"secret”属性来签名和验证用于身份验证的JWT令牌,并使用您自己的随机字符串对其进行更新,以确保没有其他人可以生成JWT来获得对应用程序的授权访问。

    5.7K10

    ASP.NET Core 微服务实战》-- 读书笔记(第10章)

    传统 ASP.NET 应用开发,常见的加密使用场景是创建安全的身份验证 Cookie 和会话 Cookie 在这种加密机制,Cookie 加密时会用到机器密钥 然后当 Cookie 由浏览器发回...一个简单的 ASP.NET Core MVC Web 应用提供安全保障功能 创建一个的 Web 应用 $ dotnet new mvc 使用 Auth0 账号配置身份提供方服务 现在可转到 http...,让 ASP.NET Core 使用 Cookie 身份验证和 OpenID Connect 身份验证 添加一个 account 控制器,提供的功能包括登录、注销、以及使用一个视图显示用户身份的所有特征...Configure 方法调用 app.UseSession() 以完成外部会话状态的配置 保障 ASP.NET Core 微服务的安全 本节,我们讨论微服务提供安全保障的几种方法,并通过开发一个使用...这种凭据通常就是用户名和密码 一些不存在人工交互的场景,将其称为客户端标识和客户端密钥更准确 使用 Bearer 令牌保障服务的安全 服务的 Startup 类型的 Configure 方法启用并配置

    1.8K10

    Membership三步曲之入门篇 - Membership基础示例

    集成Membership到ASP.NET MVC网站   这里我们的需求很简单,只是要实现一个包含注册、登录、以及修改密码功能的网站就可以了。...,最上面的表我们已经列出来了,大家可以自行尝试。...其实ASP.NET已经有一套比较成熟的权限体系,加上它的自定义功能基本可以满足我们大多数的需求了。   我们创建这个MVC站点的时候,VS也我们配置了权限模块。...接下来我们就可以代码中使用User.IsInRole方法是看用户是否具有某一个角色的权限了。...MVC的Action上我们可以直接在Authorize标签中指定某个角色,那么这个Action就只有这个角色下的用户才能够访问了。

    94560

    ASP.NET Core 的那些认证中间件及一些重要知识点

    有关于 Authentication 的知识太广,所以本篇介绍几个 ASP.NET Core 认证中会使用到的中间件,还有Authentication的一些零碎知识点,这些知识点对于 ASP.NET... AuthenticationHandler , 有几个比较重要的方法: HandleAuthenticateAsync :处理认证流程的一个核心方法,这个方法返回 AuthenticateResult...HandleUnauthorizedAsync:可以重写此方法用来处理相应401授权等问题,修改头,或者跳转等。...可能很多同学听说过 Jwt,但是大多数人都有一个误区,认为JWT是一种认证方式,经常在QQ群里面听过 前面一个同学问 实际开发前后端分离的时候安全怎么做的?,下面一个人回答使用JWT。...JWT 在身份认证的应用场景: 在身份认证场景下,一旦用户完成了登陆,接下来的每个请求包含JWT,可以用来验证用户身份以及对路由,服务和资源的访问权限进行验证。

    1.8K20

    IdentityServer4入门

    [Signature] Api 项目 创建一个asp.net core webapi 引用包Microsoft.AspNetCore.Authentication.Jwt 用于做认证 新建一个普通的...Api控制器需要认证的方法或者类上面加上[Authorize]标签 [Route("Identity")] [Authorize("MyApiScope")] //MyApiScope 这个字符串与...Main编写代码: //请求客户端(需要先安装IdentityModel) //由于IdentityModel中大部分都是异步方法,为了方便,我们将Main方法也改成异步方法 //请求客户端(需要先安装...[Authorize]标签 startup.cs 类 ConfigureServices 方法添加oidc(OpenId Connect) 认证 public void ConfigureServices...随意在一个控制器创建一个方法,表示退出登录 //实现退出页面 public IActionResult Logout() { //清除Cookies,与oidc信息 return

    7.8K30

    ASP.NET Core 基础知识】--Web API--Swagger文档生成

    二、Web API注释 2.1 XML注释 XML注释是C#代码中用于生成文档的一种标准化注释方式,特别适用于ASP.NET Core Web API控制器和操作方法。...以下是如何使用XML注释来注释Web API控制器和操作方法的基本步骤: 启用XML注释: 项目的属性启用XML文档注释。...Visual Studio,可以通过项目属性的“生成”选项卡的“生成XML文档文件”来启用。 编写XML注释: 控制器和操作方法的注释位置添加XML注释。...2.2 Swagger注解 Swagger注解是ASP.NET Core Web API中使用Swagger,通过特定的注解来增强和定制生成的API文档。...以下是一些ASP.NET Core Web API实现Swagger的权限控制的步骤: 配置 Swagger 认证: Swagger配置,首先确保已经配置了相应的身份验证方案,如JWT Bearer

    61900

    实现基于dotnetcore的扫一扫登录功能

    signalr实现后端通讯,通过二维码展示手机端扫描进行登录.源码地址:点我   话不多说上主要代码,   dotnetcore的startup文件主要代码 public void ConfigureServices...的一个认证,还添加了signalr的使用和跨域. jwtseetings的配置文件: { "Logging": { "IncludeScopes": false, "LogLevel...5000", "Audience": "http://localhost:5000", "SecretKey": "helloword123qweasd" } } Configure的代码...; }); 之后添加account控制器和login登录方法: 我们默认使用内存来模拟数据库; //默认数据库用户 default database users...Send2fontRequest被标记为jwt认证,所以该方法只有通过获取jwt token的程序才可以访问,字典我们用于简单地存储器,当手机端的程序访问这个方法后,我们系统会生成一个随机的guid,我们将这个

    1.7K40

    ASP.NET Core 3.0 一个 jwt 的轻量角色用户、单个API控制的授权认证库

    使用默认接口实现授权认证,可以参考我另一篇文章 ASP.NET Core 使用 JWT 自定义角色/策略授权需要实现的接口 得益于大笨熊哥的引导,利用放假时间重新做了一个,利用微软本身的授权认证,在此基础上做拓展...Jump 配置授权失败,跳转地址。参数分别是授权时跳转、授权无效跳转,后面两个 bool 可以设置跳转或跳转。 Time 配置 Token 有效期。...如果一个 Controller 已经设置了 [Authorize] ,但是你想里面的 Action 跳过授权认证,则使用 [AllowAnonymous] 修饰 Action。...把使用 jwt 的服务和颁发 Token 的代码封装好了,这个库不是“造轮子”,所以实际上你可以很轻松的把这部分的代码抽出来,另外设计。...Core 的 jwt 完成基础的认证授权,然后在下一个管道实现拓展的认证。

    70640

    asp.net core使用Swashbuckle.AspNetCore(swagger)生成接口文档

    asp.net core中使用Swashbuckle.AspNetCore生成接口文档 Swashbuckle.AspNetCore:swagger的asp.net core实现 项目地址:https...多版本控制(暂时见demo) 使用JWT的简单接口验证(暂时见demo) 构建一个webapi项目并使用swagger 新建asp.net core webapi项目 dotnet new webapi...安装nuget包:Swashbuckle.AspNetCore,本文使用版本1.1.0,.net core版本2.0+ 编辑解决方案添加(或者vs项目属性->生成->勾选生成xml文档文件...InjectOnCompleteJavaScript注入汉化js脚本即可 注:我在这个汉化脚本添加了保存和读取赋值token/版本的js代码 ApiVersions枚举,配置api版本,以期通过...如何自动将token保存并赋值 使用js生成了文本框到.authorize-wrapper,将值保存到了本地存储,然后会根据接口版本将版本号参数进行复制 $(function () {

    2K10

    巅峰对决!Spring Boot VS .NET 6

    这里使用的框架版本分别是, Spring Boot (v2.5.5) 和 .NET 6, 让我们开始对比吧 1.控制器 控制器是负责处理传入请求的层, 为了 Spring Boot 定义一个控制器...,我创建了一个类 ProductOrderController, 然后使用了 @RestController 和 @RequestMapping 注解, 然后控制器的每个方法上, 可以使用下面的注解来定义支持的...[Route] 特性指定基本路径, 然后控制器的每个方法上, 可以使用下面的特性来定义支持的 HTTP 方法和路径(可选)。...ASP.NET Core ,异常处理程序被注册过滤器/中间件,我们可以创建一个异常处理类,并继承 IExceptionFilter 接口。...Spring Boot , 首先需要添加依赖 spring-boot-starter-security, 然后, build.gradle 文件(或 pom.xml,如果您使用 Maven) JWT

    1.5K20

    【 .NET Core 3.0 】框架之五 || JWT权限验证

    以上是JWT的官方解释,可以看出JWT并不是一种只能权限验证的工具,而是一种标准化的数据传输规范。所以,只要是系统之间需要传输简短但却需要一定安全等级的数据,都可以使用JWT规范来传输。...如果你想知道如何在其他地方将这个 uid从 Token 取出来,请看下边的SerializeJwt() 方法,或者整个解决方案,搜索这个方法,看哪里使用了!...标准:Cookie认证,用户登录,返回一个302到登录页面,这在非浏览器情况下很难处理,而Bearer验证则返回的是标准的401 challenge。...而NameClaimType和RoleClaimType需与Token的ClaimType一致,IdentityServer也是使用的JwtClaimTypes,否则会造成User.Identity.Name...添加受保护资源 创建一个需要授权的控制器,直接使用Authorize即可: [Authorize] [Route("api/[controller]")] public class SampleDataController

    2.1K30

    以太坊区块链 Asp.Net Core的安全API设计 (上)

    最简单的方法可能是请求用户使用其他随机生成的数据以太坊上进行交易,然后发出JWT之前检查交易和随机数据。这种方法有几个副作用: 1.用户必须进行交易并支付gas以进行简单的身份验证。...本教程,我们将构建一个Asp.Net Core 2项目作为API层,并构建一个简单的HTML/javascript客户端作为DApp,以实际演示此身份验证过程。 ?...两个项目选择项目脚手架。 ? EthereumJwtClient只是一个HTML/Javascript客户端。...我们将在Asp.Net Core上构建客户端应用程序,只是为了IIS Express上轻松运行它。 我们需要准备EthereumJwtApi来创建和处理JWT token,以保护一些安全端点。...控制器,核心方法,Authenticate和Authenticate2尚未实现。

    1.2K30

    七天学会ASP.NET MVC (四)——用户授权认证问题

    设置名字 输入工资值 56 点击“Save Employee”按钮。 会出现验证失败,但是数字 56 仍然显示 Salary 文本框。 ? 测试2 ?...当点击”Add New“超链接,请求会通过Add New方法处理,该Action 方法,可以不传递任何数据。即就是,View的Model属性。...是可以得,只需要为每个错误创建span 标签,默认设置不可见,当提交按钮点击,如果验证失败,使用JavaScript修改错误的可见性。 自动获取客户端验证还有什么方法?...让Action 方法更安全 Index action 方法添加认证属性 [Authorize]. 1: [Authorize] 2: public ActionResult Index...Asp.net MVC中提供四种过滤器来过滤请求和响应的,Authorize属性是Authorize过滤器之后执行的,可以确保授权请求Action 方法处理。

    8.7K50

    从 MVC 到使用 ASP.NET Core 6.0 的Minimal API

    定义路由和处理程序 MVC MVC ,我们有两种[2]定义路由的方法,一种是通过约定,一种是使用属性。 基于约定的路由更常用于网站而不是 API,并包含在mvc模板。...MVC MVC ,您可以将 JSON 从请求正文绑定到 .NET 类型,方法是将其作为参数传递给您的操作方法使用[FromBody]属性对其进行修饰: [HttpPost("/payments"...还有一个出色的建议[6]是传递方法组而不是内联 lambda 隐式生成端点名称。...MVC MVC 应用程序使用[Authorize]属性装饰您的控制器和/或操作以指定您的授权要求。此属性允许您指定角色和策略。...]使用方法组定义处理程序时可以使用与 MVC相同的属性: [Authorize("AtLeast21")] string Alcohol() { } 总结 Minimal APi提供了一种使用 ASP.NET

    7.6K10

    ASP.NET Core 2.2 : 二十七. JWT与用户授权(细化到Action)

    上一章分享了如何在ASP.NET Core应用JWT进行用户认证以及Token的刷新,本章继续进行下一步,用户授权。涉及到的例子也以上一章的基础。...的张三添加了一个Claim,用于测试Token存储用户的角色信息,对应测试FlyLolo.JWT.API的BookController的Put方法,若用不到可删除 if (...的BookController,添加了一个Action如下 /// /// 测试JWT的token添加角色,在此验证 见TokenHelper...通过声明的方式,目测实际项目中需要在Startup先声明一系列的Policy,然后Controller或Action中使用。 这两种方式都感觉不好。...3.使用自定义的处理程序 Startup的ConfigureServices添加授权代码 services.AddAuthorization(options => options.AddPolicy

    1.5K40

    从壹开始前后端分离【 .NET Core2.2 +Vue2.0 】框架之五 || Swagger的使用 3.3 JWT权限验证

    以上是JWT的官方解释,可以看出JWT并不是一种只能权限验证的工具,而是一种标准化的数据传输规范。所以,只要是系统之间需要传输简短但却需要一定安全等级的数据,都可以使用JWT规范来传输。...如果你想知道如何在其他地方将这个 uid从 Token 取出来,请看下边的SerializeJwt() 方法,或者整个解决方案,搜索这个方法,看哪里使用了!...标准:Cookie认证,用户登录,返回一个302到登录页面,这在非浏览器情况下很难处理,而Bearer验证则返回的是标准的401 challenge。...而NameClaimType和RoleClaimType需与Token的ClaimType一致,IdentityServer也是使用的JwtClaimTypes,否则会造成User.Identity.Name...添加受保护资源 创建一个需要授权的控制器,直接使用Authorize即可: [Authorize] [Route("api/[controller]")] public class SampleDataController

    1.9K30

    ASP.NET Core 2.2 : 二十七. JWT与用户授权(细化到Action)

    上一章分享了如何在ASP.NET Core应用JWT进行用户认证以及Token的刷新,本章继续进行下一步,用户授权。涉及到的例子也以上一章的基础。...的张三添加了一个Claim,用于测试Token存储用户的角色信息,对应测试FlyLolo.JWT.API的BookController的Put方法,若用不到可删除 if (...的BookController,添加了一个Action如下 /// /// 测试JWT的token添加角色,在此验证 见TokenHelper...通过声明的方式,目测实际项目中需要在Startup先声明一系列的Policy,然后Controller或Action中使用。 这两种方式都感觉不好。...3.使用自定义的处理程序 Startup的ConfigureServices添加授权代码 services.AddAuthorization(options => options.AddPolicy

    91030
    领券