4

SPA Web アプリ + IdentityServer4 + ASPNET Core + ASPNET Core Identity を構築しようとしています。私は Identityserver ドキュメントのクイックスタートに従っていますが、これは本当に素晴らしいものです。私はJSクライアントを使用したクイックスタートIdentity Server Quickstartにもっと興味があります

私はそれに従ってきましたが、これまでのところとても良いです。次のように、いくつかのフィールドと関連テーブルをユーザーに追加しました。

app_user

これはソリューション エクスプローラーです

ソリューション エクスプローラー

ユーザーとそれに関連するテーブル/フィールドを表示するページを作成したいと考えています。(基本的に、私の質問は、現在のユーザーにアクセスし、JS クライアントが使用する API を公開する方法です)

どうすればそれを達成できますか?(以下に説明するすべてのポイントは、オンラインで読んだだけで、実装方法がわかりません)

  • ユーザーをセッションに保存する必要がありますか? そこからアクセス?
  • connect/userinfo エンドポイントを使用する必要がありますか?

お知らせ下さい。

4

1 に答える 1

7

のアイデアはIdentityServer、ユーザー ID の概念を分離することです。簡単に言えば、web APIユーザーが保存されているデータベースにアクセスしてはならない/アクセスできないことを意味します。

に必要なユーザー ID に関連するすべてのものは、によって付与さweb APIれる必要があります。(例えばクレーム)access tokenIdentityServer

あなたの例では、次のように、フィールドを削除PointsWalletsApplicaionUser、それらを保存するための追加テーブルを作成できます。

public class UserInfo
{
    public string UserSubject { get; set; }
    public int Points { get; set; }
    public ICollection<Wallet> Wallets { get; set; }
}

ユーザー ID に関連するものが必要な場合は、次のようなクレームから取得できます。

[Authorize]
public ActionResult SomeAction()
{
    var identity = (ClaimsIdentity)User.Identity;
    IEnumerable<Claim> claims = identity.Claims;
    ...
}

ユーザーが必要な場合はPoints、これらのクレームからクレームを取得し、データベースにクエリを実行できます。Walletssub

Pointsまた、Walletsユーザー サブジェクトごとに保存する必要があることも意味します。

于 2016-10-20T09:28:08.353 に答える