2016-08-01 6 views
2

特定のIP範囲内からサイトにアクセスしているユーザーのみがアクセスできる特定のページがあります。他のすべてのユーザーの場合、これらのページにはアクセスできず、それぞれのリンクはメニュー/ナビゲーションに表示されません。イントラネットとインターネットユーザーのナビゲーションとコンテンツを表示/非表示するOrchardCMSの拡張方法

OrchardCMSの新機能ですが、誰かが一般的な指針を示して正しい方向に向けることができますか?

+0

アウト[このスレッド](http://stackoverflow.com/questions/11879500/how-toを-limit-page-access-only-localhost) – devqon

+0

devqon、私はdot.netでこれを行う方法を知っています、それは構文の問題ではありません。問題は、orchardCMSをどのように拡張してこのような動作につなげるかです。ありがとう! – NoCarrier

答えて

3

あなたの質問には2つの側面があります。それにコンテンツアイテムやメニュー項目の相対的な果樹園へのアクセスを確認するには

1:

これを実現するために、あなたはデフォルトのロールベースの認証サービスを置き換えるために新しいIAuthorizationServiceEventHandlerを実装することができ、あなたのための最良のサンプルですいくつかのアクションへのアクセスを確認するには

​​

2:あなたはOrchard.ContentPickerモジュールの下に見つけることができますContentMenuItemAuthorizationEventHandlerは、私はこのハンドラの使用方法を説明するためのサンプルコードが含まれていました。これを実現するために

、あなたのシステム内のいくつかのアクションへのアクセスをチェックするために、新しいIAuthorizationFilterを実装できます。

public class CustomAuthorizationFilter : FilterProvider, IAuthorizationFilter { 
    public void OnAuthorization(AuthorizationContext filterContext) { 
     if (!Granted) { 
      filterContext.Result = new HttpUnauthorizedResult(); 
     } 
    } 
} 
1

@mdameerで言及したソリューションはOKですが、コンテナを使用しているときに困難に実行されます、リスト、投影、およびもの。

私は似たような仕事をしましたが、日付の時間範囲がありました。私の質問を参照し、カスタムパーツを経由して、これを取り組むためにどのようなアイデアを取得するためのタスクに答える:

How to skip displaying a content item in Orchard CMS?

関連する問題