私はこれに完全に固執しています。IdentityFrameworkを使用してデータベースに新しいIdentityRoleを追加するアクションを作成しました。残念ながら、実行されるたびに失敗したことが返され、ブレークポイントを挿入した後、newRole
期待どおりにsuperadminではなくnullを値として渡していることを確認しました。
以下は、私が使用しているのとまったく同じURLです。
https://localhost:44344/account/addrole/superadmin
そして、これは対応するアクションです:
[Authorize(Roles = RoleNames.CanAddUsers)]
public ActionResult AddRole(string newRole)
{
var roleStore = new RoleStore<IdentityRole>(new ApplicationDbContext());
var roleManager = new RoleManager<IdentityRole>(roleStore);
var result = roleManager.Create(new IdentityRole(newRole));
return result.Succeeded
? Content(newRole + " added to database.")
: Content("Failed to add " + newRole + ".");
}
これで、ログインしているユーザーがCanAddUsersの役割を持っていることを確認し、再確認しました。ログインにリダイレクトされるのではなく、単に受信するだけです。 Failed to add .
確認するために、以下は私のルートであり、私のコードが別の方法でルーティングされている可能性があることを示唆するものは他に見つかりません。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
この時点で、それはおそらく信じられないほど明白な間違いであると確信していますが、私はそれを見つけることができません!
MapRouteのみを使用する場合は、オプションのパラメーターの名前(このid
場合)が使用されることを知っておく必要があります。
次に、アクションのパラメーターの名前をに変更するか、を記述しid
てnewRole
変数を使用することを明示的に指定する必要がありますaddrole?newRole=superadmin
。
または、他の人が指摘しているように、これにはGETではなくPOSTを使用することをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加