2011-12-28 11 views
1

ほとんどの私のASP.NETウェブサイトは、匿名のウェブユーザーにアクセス可能です。しかし、アクセスを許可するには、認証が必要なページがいくつかあります。私は、web.configファイルを経由して、これを制御しますログインページにカスタマイズされたコンテンツを追加する

<authorization> 
    <allow users="*"/> 
</authorization> 

は、現在、私のlogon.aspxファイルは汎用のですが、私は本当に彼がログオンページにリダイレクトされた理由をユーザに伝える指示を含めるしたいと思います。何かのように:

あなたが仕事にボランティアできるようになる前に、システムがあなたを識別できるようにログオンしてください。

OR

あなたは、イベントを編集しようとしました。システムでは管理者のみがこれを行うことができます。あなたがこのイベントの管理者であることを確認できるように、ログインしてください。

ログオンページの指示は、フォーム認証リダイレクトの前にユーザーが試行していたものによって異なります。

私の問題は、どのようなアクションが取られたのかをログオンページで判断できますか?ログオンページにカスタムクエリ文字列を渡すことはありますか?私はReturnUrlをデコードして、どの命令を表示するかを決定するのに使うことができると思います。しかし、そのアプローチは単に汚いと感じています。私は、システム内の他のページのURL名に依存するログオンページが好きではありません。

提案がありますか?

答えて

0

なぜカスタム例外を使用しないでください。

public class ClassName: Exception 
    { 
     protected ClassName() : base() {} 
     public ClassName(String message) : base(message) { } 
    } 

次に、あなたが今、あなただけの

public class First: ClassName 
{ 
    public First() : base("message") {} 
} 

public class Second: ClassName 
{ 
    public Second() : base("message") { } 
} 

ClassName型の例外をキャッチし、メッセージの値を取得し、ASPラベルまたはテキストボックスにそれを渡すか、またはあなたはそれを

+0

どのように例外プロHTTPリダイレクトでpagateする? – Aheho

0

を行いたいがありませんglobal.asaxのApplication.EndRequestでリダイレクトをキャプチャすることもできます

void Application_EndRequest(object sender, EventArgs e) 
    { 
     if (!HttpContext.Current.Request.IsAuthenticated && HttpContext.Current.Response.StatusCode == 302 && HttpContext.Current.Response.RedirectLocation != null && HttpContext.Current.Response.RedirectLocation.ToLower().Contains("login.aspx")) 
     { 
      // do some switching or determining here, or have items preset in your HttpContext.Current.Items[] 
      HttpContext.Current.Response.RedirectLocation += "&Action=blah"; 

     } 
    } 
関連する問題