1

ASP.NET Core & Identity 3 を使用しています。

ログインすると、現在選択されているユーザーの UI テンプレートを読み取り、ファイルにこのテンプレートに基づいて_Layout.cshmlロードします。css

ユーザーは自分のテーマを変更でき、コントローラーを介してセッション変数に保存します

public IActionResult ChangeTheme(int id, string returnUrl)
{
    HttpContext.Session.SetInt32("Template", (id));
    return Redirect(returnUrl);
}

ロードごとにデータベースにクエリを実行する代わりにcshtml、テンプレートをセッション変数に入れ、テンプレートにLayout.cshtml応じて異なる css をレンダリングします。

        switch (template)
        {
            case (int)TemplateEnum.Template2:
                <text>
                <link rel="stylesheet" href="~/css/template1.css" />
                </text>
                break;
            case (int)TemplateEnum.Template2:
                <text>
                <link rel="stylesheet" href="~/css/template2.css" />
                </text>
                break;
        {

セッションの有効期限が切れたらどうなるのだろうと思っています。

  1. _Layout.cshtmlmy is there とにかく値にアクセスしてnullになった場合にそれをキャッチし、新しいページがレンダリングされる前にすぐにdbからロードすることを考慮してください。

  2. 私は Identity 3 を使用しているので、Claims の方がよいオプションでしょうか? 私は前にそれを使用したことがありません。上記の私の例のコードは何でしょうか

  3. 私のシナリオに適した別のオプションはありますか?

4

2 に答える 2

0

必要に応じてユーザーのアイデンティティにテーマを保存することもできますが、テーマを更新するたびにユーザーを辞任させる必要があります...

次のようにします。

userManager.AddClaimAsync(user, new Claim("Template", id+""));
signInManager.SignInAsync(user);
于 2016-02-22T20:06:26.627 に答える