このトークンベースの認証システムをアプリケーションに実装できましたが、少し質問があります。メソッド内でユーザーが署名されているかどうか(たとえば、リクエストに有効なトークンがあるかどうか)を確認するにはどうすればよいですか? [Authorize]で?
コントローラーがあり、そのコントローラーでユーザーがサインインしているかどうかを確認したいと思います。これを使用することを考えました。
if (_signInManager.IsSignedIn(ClaimsPrincipal.Current))
{
...
}
claimsPrincipal.Currentは常にnullであるため機能しません
SigninManagerなどを使用する必要はありません。ユーザーはパイプライン(ベースコントローラーのUserプロパティ)に注入され、その情報は認証ミドルウェア(Cookieまたはトークン)によって自動的に入力されます。だから、あなたのコントローラーで:
bool isAuthenticated = User.Identity.IsAuthenticated;
はい 。 put [Authorize]
属性がクラスまたはメソッドの上にあり、ユーザーが認証されているかどうかを確認します。次のコードでユーザーを取得できます。
var principal = User as ClaimsPrincipal;
var check = User.Identity.IsAuthenticated;