web-dev-qa-db-ja.com

ユーザーがASP.NET Coreのトークンベース認証でログインしているかどうかを確認します

このトークンベースの認証システムをアプリケーションに実装できましたが、少し質問があります。メソッド内でユーザーが署名されているかどうか(たとえば、リクエストに有効なトークンがあるかどうか)を確認するにはどうすればよいですか? [Authorize]で?

コントローラーがあり、そのコントローラーでユーザーがサインインしているかどうかを確認したいと思います。これを使用することを考えました。

if (_signInManager.IsSignedIn(ClaimsPrincipal.Current))
{
    ...
}

claimsPrincipal.Currentは常にnullであるため機能しません

13
user2657943

SigninManagerなどを使用する必要はありません。ユーザーはパイプライン(ベースコントローラーのUserプロパティ)に注入され、その情報は認証ミドルウェア(Cookieまたはトークン)によって自動的に入力されます。だから、あなたのコントローラーで:

bool isAuthenticated = User.Identity.IsAuthenticated;
45
Vi100

はい 。 put [Authorize]属性がクラスまたはメソッドの上にあり、ユーザーが認証されているかどうかを確認します。次のコードでユーザーを取得できます。

var principal = User as ClaimsPrincipal;
var check = User.Identity.IsAuthenticated;
2