、あなたがこれを達成するために行う必要があり、次のような新しいIActionFilter
またはIAuthorizationFilter
を実施しているすべて:あなただけのコンテンツ項目(のような:ウィジェット、ページ、プロジェクション)に基づいて許可したい場合は
public class CheckAccessFilter : FilterProvider, IActionFilter, IAuthorizationFilter {
public void OnActionExecuting(ActionExecutingContext filterContext) {
// here you can check the incoming request, and how the system will deal with it,
// before executing the action
}
public void OnActionExecuted(ActionExecutedContext filterContext) {
}
public void OnAuthorization(AuthorizationContext filterContext) {
// here you can authorize any request
}
}
しかし、 、あなたはIAuthorizationServiceEventHandler
実装することができます:あなたは、このアプローチを実装するために従うことができ
public class IPAuthorizationEventHandler : IAuthorizationServiceEventHandler {
public void Checking(CheckAccessContext context) {
}
public void Adjust(CheckAccessContext context) {
}
public void Complete(CheckAccessContext context) {
}
}
最高のサンプルがSecurableContentItemsAuthorizationEventHandler
で、あなたはOrchard.ContentPermissions
モジュールでそれを見つけることができます。
これは、このようなコードをどこに置くかについての私の質問に答えました。しかし、「HTTPヘッダーが既に設定された後にリダイレクトできない」ため、私のチェックが失敗した場合に、 'OnResultExecuting'メソッドでリダイレクトできないという問題がありました。これを回避する方法があればどんな考えですか? – Lawyerson
申し訳ありませんが、これは私の間違いです。更新された回答を参照してください。アクションを処理する前に 'IResultFilter'ではなく 'IActionFilter'を使用してリクエストをキャッチしてください。 – mdameer
乾杯、私が知りたいと思ったこと以上のこと! – Lawyerson