1
すべての私のREST APIメソッドは、そのコードで始まる:彼らはASP.NET Web API 2でJWTトークンを検証する定型コードを回避するにはどうすればよいですか?次のように
[HttpPost]
[Route("Login")]
public async Task<IHttpActionResult> Login(QueryModel q)
{
// get JWT Token string form HTTP Header
string token = Request.Headers.GetValues("Authorization").FirstOrDefault();
// decode token
string json = Jose.JWT.Decode(token, JWTModel.secretForAccessToken);
JWTModel jwt = JsonConvert.DeserializeObject<JWTModel>(json);
// check if issued from my homepage.
if (!jwt.iss.Equals("my-home-page.com"))
{
return Content(
HttpStatusCode.Unauthorized,
"access token is not from here"
);
}
// check if it has valid about time
long now = (long)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;
if (jwt.iat > now || jwt.exp < now)
{
// request refresh token
return Content(
HttpStatusCode.Unauthorized,
"outdated access token"
);
}
/* ... */
}
どのようにとんでもないと冗長!
簡略化してモジュール化することはできますか?そしてどうやって?
(Node.jsので、私はいわゆるミドルウェアを使用することによってそれを解決することができます。)
私はOWINを使用しませんが、DelegatingHandlerはとてもクールに見えます。私はすぐに自分のコードに適用するつもりです!そして結果を報告します。 –
私は最終的に 'DelegatingHandler'を使って自分のコードを消毒しました! [このドキュメント](https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/http-message-handlers#example-checking-for-an-api-key)も役立ちます。 –