【发布时间】:2018-02-26 19:05:43
【问题描述】:
我在控制器中使用[Authorize] 属性进行身份验证,但是当我收到对TestMethod 的请求时,我收到错误:“500 Internal..”。
我做错了什么??
我的代码来自StartUp.cs
services.AddAuthorization(options =>
{
options.DefaultPolicy =
new AuthorizationPolicyBuilder("Identity.Application")
.RequireAuthenticatedUser()
.Build();
});
services
.AddAuthentication(option =>
{
option.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.TokenValidationParameters =
new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
SaveSigninToken = true,
ValidateIssuer = true,
ValidIssuer = "http://blabla/",
ValidateAudience = true,
ValidAudience = "http://blabla/",
ValidateLifetime = true,
IssuerSigningKey = blabla.bla(),
ValidateIssuerSigningKey = true,
};
});
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme);
services.AddMvc();
还有来自控制器的代码
[Route("test"), HttpPost]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public void Test() { }
你有想法吗?
我正在使用这些库来生成令牌:
System.IdentityModel.Tokens.Jwt;
Microsoft.IdentityModel.Tokens;
【问题讨论】:
-
您是否在中间件管道中添加了
app.UseAuthentication()?还有你为什么要写两次AddAuthentication? -
@Kahbazi 是的,添加了“app.UseAuthentication()”。接下来..所以,测试后它是“垃圾”,对不起,对于糟糕的代码,我将删除它。
-
你是如何登录的?
-
@NevilleNazerane 登录成功,在我生成令牌之后。我的问题:我无法访问带有 [Authorize] 前缀的方法,我收到 500 错误。
-
您的实际 500 错误应该显示在控制台的某处
标签: c# asp.net-mvc asp.net-core asp.net-core-2.0