1

ログインユーザーが管理者の場合、次のように管理ページにリダイレクトしたいのですが、

            if (User.IsInRole("Administrator"))
            {
                return RedirectToAction("AdminLayout", "Home");
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }

ただし、else返品は必ず行います。

データベースに、ユーザー「admin」とUserId=1パスワード「admin 」を挿入しました

そして私が持っているロールテーブルRoleId=1RoleName=Administrator

そして、私が持っているUsersInRolesテーブルRoleId=1UserId=1

アップデート

web.config では、

   <roleManager enabled="true" defaultProvider="SimpleRoleProvider">
        <providers>
        <clear/>
        <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
      </providers>
    </roleManager>
4

1 に答える 1

1

いつリダイレクトを試みますか? 次のページが読み込まれる前の場合、Userオブジェクトはまだ解決されません。コードにブレークポイントを設定すると、それUsernull. もちろん、null管理者の役割になることはありません。

これを回避するには、次のことができます

  1. 次のページでリダイレクトを行う

    また

  2. ログインプロセスからユーザー名を取得し、ログインしているユーザーを見つけて役割を確認します。

于 2013-02-13T01:19:49.847 に答える