2016-12-24 9 views
2

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

だから私は、コントローラを持っており、そのコントローラに私はユーザーが署名されているかどうかを確認したい、私はこれを使用して考える:。

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

しかしClaimsPrincipal.Currentは常にnull

あるので、それは動作しません。

答えて

17

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

bool isAuthenticated = User.Identity.IsAuthenticated; 
+1

あなたのコードを試しましたが、 '名前 'ユーザー'が現在のコンテキストに存在しません' – user2657943

+1

あなたのコントローラクラスは "コントローラ"から継承していますか、それともPOCOですか? – Vi100

+1

Controllerから継承しました!私はそれを忘れたとは信じられない! – user2657943

1

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

var principal = User as ClaimsPrincipal; 
var check = User.Identity.IsAuthenticated; 
+0

私は、最初の[オーソライズ]なしでそれを試してみたいのですが、それは '名「ユーザー」あなたは、次の名前空間必要 – user2657943

+0

現在context'には存在しないと言う: をusing System.Security.Principal; ; –

+0

私は今それを参照しましたが、違いはありません – user2657943

関連する問題