2011-07-13 6 views
2

私のSitecoreサイトでは、承認されたユーザーだけが閲覧可能なページが必要です。私はextranet \ anonymousの読み込みと継承を拒否したいという役割のための読み込みと継承を許可しました。アイテムは、他のアイテムが保護されていないグループの一部です。このアイテムのリストはデータバインドされ、サイトのナビゲーションリンクとしてレンダリングされます。保護されたページのリンクを取得し、ユーザーをログインページにリダイレクトするにはどうすればよいですか?

var id = new Sitecore.Data.ID("<guid here>"); 
var item = Sitecore.Context.Database.GetItem(id); 

// protected item is not part of Children collection when user is anon. 
this.navrepeater.DataSource = item.Children; 
this.navrepeater.DataBind(); 

私がログインすると、保護されたアイテムへのリンクが表示され、そのページを表示できます。私がログインしていないとき(エクストラネット\ anonymousとして動作しているとき)、リンクは全く表示されません。 URLに直接行くと403エラーが出ます。私のweb.configではsiteノードのloginPage属性を設定しましたが、リダイレクトされません。

<site name="mysite" ... loginpage="/login.aspx" /> 

ので、

  1. はどのようにして、匿名ユーザー

  2. を必要なときに、ログインページにユーザーをリダイレクトするサイトコアを入手するにはどうすればよい
  3. ための保護されたページへのリンクが表示されません
+0

誰の情報でも、 'loginpage'は大文字と小文字を区別し、' loginPage'でなければなりません。 – lincolnk

答えて

3

1)のナビゲーションリンクの項目を取得するコードをラップすることができます

using(new SecurityDisabler()) { // this bypasses any security 
    this.navrepeater.DataSource = item.GetChildren(); // note that the Children property is deprecated, use the GetChildren() method instead 
} 

2)あなたはSitecore.Shell.Web.UI.SecurePageからクラスを継承の背後にあるあなたのページのコードを作成する場合は、チェックを処理し、あなたのためのログインページにリダイレクトします:彼らはページを表示できない場合でも、リンクを表示する。コーディングは必要ありません。

+0

ありがとう、 'SecurityDisabler'それでした。 'SecurePage'は私に苦労しましたが、loginpageは大文字と小文字を区別し、' SecurePage'なしでログインリダイレクトが動作することを知りました。 – lincolnk

+0

Oooooh ... Sitecore.Shell.Web.UI.SecurePageから任意のASPXページを継承できますか?私はSitecoreの代わりにIIS経由で保護している私のSitecoreツリーの外にいくつかのユーティリティページ(ファイルシステム.aspxファイル)を持っています。 – Bryan

関連する問題