【发布时间】:2019-02-11 12:25:01
【问题描述】:
我想确定 JWT Token 在[AllowAnonymouse]] 端点中是否有效
编辑
我有一个端点,任何人(授权和未经授权的人)都可以访问,然后:如果该用户有 http 授权标头或者他在 cookie 中有令牌并且他的令牌有效,则将他重定向到 X,否则重定向到 Y
我的想法的伪代码:
[Route("Passport/")]
public IActionResult Passport()
{
if (this.User.Identity.IsAuthenticated)
or pseudocode:
if (tokenIsValid(getJWTTokenFromHeader()));
{
return RedirectToAction("Resources");
}
else
{
return RedirectToAction("Login");
}
}
我想过这样的事情:
[Route("Passport/")]
public IActionResult Passport()
{
var token = ExtractTokenFromHeader();
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue
("application/json"));
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
var get = client.GetAsync($"http://localhost/verifyToken").Result;
var responseBody = await get.Content.ReadAsStringAsync().ConfigureAwait(false);
switch (get.StatusCode)
{
case HttpStatusCode.Unauthorized:
return RedirectToAction("Login");
case HttpStatusCode.OK:
return RedirectToAction("Resources");
default:
return RedirectToAction(...);
}
}
端点 verifyToken 有一个 [Authorize] 属性并且只返回 Unauthorized(默认)或 OK(来自代码)
【问题讨论】:
-
您能否详细说明,您的问题不清楚
-
我有一个端点,任何人(授权和未经授权的人)都可以访问,然后:如果该用户有 http 授权标头或者他在 cookie 中有令牌并且他的令牌有效,则将他重定向到 X 否则到Y
-
使用策略而不是在控制器方法中检查令牌:docs.microsoft.com/en-us/aspnet/core/security/authorization/…
-
@aguafrommars 听起来不错,但我仍然需要确定令牌在
HandleRequirement中是否有效? -
那么只使用
if (this.User.Identity.IsAuthenticated)有什么问题?
标签: c# asp.net-core .net-core asp.net-core-mvc