独自のカスタム Authorize 属性を実装しました。
この属性は、コントローラー レベルとアクション レベルの両方で適用されます。
これが私がする必要があることの例です:
[ClaimsAuthorize(Roles = "AdvancedUsers")]
public class SecurityController : Controller
{
[ClaimsAuthorize(Roles = "Administrators")]
public ActionResult AdministrativeTask()
{
return View();
}
public ActionResult SomeOtherAction()
{
return View();
}
}
現在、管理者ロールを持っていても AdvancedUsers ロールを持っていないユーザーは、「管理タスク」を実行できません。
ユーザーがコントローラ レベルで許可されていない場合でも、アクション レベルでセキュリティ チェックを実行するようにこの動作を変更するにはどうすればよいですか?
今のところ、考えられる唯一の解決策は、2 つの属性を実装することです。1 つはコントローラーを保護するためのもので、もう 1 つはアクションを保護するためのものです。次に、Order プロパティを操作して、最初にアクション レベルでそれを実行します。
ただし、可能であれば、単一の属性を持つソリューションを希望します。