asp.net-core – options的用途.AutomaticAuthenticate with Use
发布时间:2020-12-16 07:11:03 所属栏目:asp.Net 来源:网络整理
导读:在将代码库从ASP 5 beta 7更新到RC1-final之后,我开始从JwtBearer中间件接收此异常 Unable to cast object of type 'Newtonsoft.Json.Linq.JArray' to type 'System.IConvertible'. 到目前为止我可以看到的决定因素似乎是选项的设置.AutomaticAuthenticate.
在将代码库从ASP 5 beta 7更新到RC1-final之后,我开始从JwtBearer中间件接收此异常
Unable to cast object of type 'Newtonsoft.Json.Linq.JArray' to type 'System.IConvertible'. 到目前为止我可以看到的决定因素似乎是选项的设置.AutomaticAuthenticate.如果这是真的,那么我得到例外,否则,我没有. 什么是AutomaticAuthenticate,为什么我需要启用它? app.UseJwtBearerAuthentication(options => { options.AutomaticAuthenticate = true; } 这是完整的堆栈跟踪: at System.Convert.ToInt32(Object value,IFormatProvider provider) at System.IdentityModel.Tokens.Jwt.JwtPayload.GetIntClaim(String claimType) at System.IdentityModel.Tokens.Jwt.JwtPayload.get_Nbf() at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token,TokenValidationParameters validationParameters,SecurityToken& validatedToken) at Microsoft.AspNet.Authentication.JwtBearer.JwtBearerHandler.<HandleAuthenticateAsync>d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNet.Authentication.JwtBearer.JwtBearerHandler.<HandleAuthenticateAsync>d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Microsoft.AspNet.Authentication.AuthenticationHandler`1.<InitializeAsync>d__48.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at Microsoft.AspNet.Authentication.AuthenticationMiddleware`1.<Invoke>d__18.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at Api.Startup.<<Configure>b__9_0>d.MoveNext() in ...Startup.cs:line 156 更新根本原因 我们的代码库正在为nbf,exp和iat创建重复声明.这就解释了为什么get_Nbf在堆栈跟踪中以及关于“JArray”的抱怨,因为每个值都是数组而不是值. 解决方法
如果设置为true,则中间件将在每个入站请求上运行,查找JWT令牌,如果存在,则将验证它,如果有效则从中创建标识并将其添加到当前用户.
如果它没有发生,那么您需要通过在authorize属性中指定承载的方案来请求中间件设置标识. [Authorize(AuthenticationSchemes = "YourBearerSchemeName")] 或者你在政策中设置这个; options.AddPolicy("RequireBearer",policy => { policy.AuthenticationSchemes.Add("YourBearerSchemeName"); policy.RequireAuthenticatedUser(); }); 因此,通过将其设置为false,您实际上并没有运行持有者的东西,直到您要求它为止,您只是将异常关闭直到稍后. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- MVC记录范围
- 如何从ASP.NET Web服务生成JSONP以进行跨域调用?
- asp.net – LINQ:列表中唯一项目的计数
- asp.net-mvc – MVC发布复杂对象的列表
- 任何可用于在ASP.NET MVC页面上选择时间的JQuery时间插件?
- wcf – SOAP API HTTPS – 与经典ASP连接
- ASP.NET TextBox LostFocus事件
- asp.net-core – 如何在.Net Core应用程序中读取web.config
- asp.net-mvc – 使用MVC 4.0 Web Api的NewtonSoft json Con
- asp.net – 如何跨服务器场实现锁定?
推荐文章
站长推荐
- asp.net – 导致StackOverflowException的Siteco
- asp.net-mvc-3 – Orchard CMS小部件显示类型
- asp.net – 如何使用输出缓存.ashx处理程序
- ASP.NET开发人员试图学习Drupal和PHP
- StructureMap和ASP .Net Web API和.Net Framewor
- asp.net-mvc-4 – 扩展名的URL不能通过路由处理
- asp.net-mvc – ASP.NET MVC:多个项目错误
- asp.net – 有没有更好的方法将ClientID转换为外
- 如何创建自定义授权属性以检查Asp.Net Core中的角
- ASP.NET应用程序未记录到Windows事件日志
热点阅读