- - PR -
フォーム認証でリダイレクト先が変わる
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-08-11 15:04
いつも拝見させてもらってます。
フォーム認証をした後に要求元URLへリダイレクトすると 思うのですが、このリダイレクト先が変わってしまいます。 具体的には、 http://localhost/Webアプリ名/login.aspx?ReturnUrl=default.aspx としたいのですが、ページの遷移を login.aspx → default.aspx → Hoge1.aspx → Hoge2.aspx のように遷移し、Hoge2.aspx でSessionが切れた場合に、 リダイレクトされるURLが http://localhost/Webアプリ名/login.aspx?ReturnUrl=Hoge2.aspx になってしまいます。 これを http://localhost/Webアプリ名/login.aspx?ReturnUrl=default.aspx としたいのですが。 何か設定及び処理が足りないのでしょうか? ご教授お願い致します。 また、Web.config以下のように設定済みです。 <authentication mode="Forms"> <forms name="Webアプリ名" loginUrl="Login.aspx" protection="All" imeout="1" /> </authentication> | ||||
|
投稿日時: 2005-08-11 15:33
私も同じ現象になったことがあります。
根本的な解決策は詳しい方にお任せします。 Session変数にフラグをもっておけば期待するルートを経ているかどうかチェックできると思いますよ。 _________________ たつごろー codeseek こみゅぷらす | ||||
|
投稿日時: 2005-08-11 16:12
たつごろーさん、早速の回答ありがとうございます。
実は、フォーム認証を使用しない方法では、Sessionの有無を監視して 強制的にloginページへ遷移する方法は、実装しております。 同様の事がフォーム認証を利用することで、もっと簡単に実装出来るのでは? と思い検証しているのですが…なかなか思うように動いてくれません。 VisualStudioの FormsAuthentication.RedirectFromLoginPage メソッド のヘルプに記載してある RedirectFromLoginPage メソッドを呼び出すと、クエリ文字列に指定された戻り先 URL キーにリダイレクトされます。たとえば、 http://www.contoso.com/login.aspx?ReturnUrl=caller.aspx という URL の場合、 caller.aspx が RedirectFromLoginPage のリダイレクト先となる戻り先 URL となります。戻り先キーがない場合、 RedirectFromLoginPage は Default.aspx にリダイレクトします。 このヘルプ文章のcaller.aspxを、ひとつのページ(default.aspx)にしたいのですが。 | ||||
|
投稿日時: 2005-08-11 16:17
うーん、これをやってくれるのもフォーム認証の利点の一つだと思いますが… ※変わってしまうんじゃなくて、変えてくれているんですよね? 現在どのようにコーディングしているのか分かりませんが、RedirectFromLoginPageを使っているのなら、 認証クッキーの設定とリダイレクトを別々に自分で書いてやれば好きに制御することが出来たはずです。 ※細かいことは覚えてないですが、ASP.NETフォーム認証関連の使い方を調べたら載ってると思います。 | ||||
|
投稿日時: 2005-08-11 16:49
要求元URLが変わっているのだから、リダイレクト先がそれに ともなって変わるのは当然のことですよね。 で、ぴかぴかさんがやろうとしているのはリダイレクト先を 要求元URLに関係なく固定化したい、ということですね。 この場合、RedirectFromLoginPageメソッドではなく、 SetAuthCookieメソッドを利用します。 SetAuthCookieメソッドで認証したというチケットをブラウザに 渡すよう設定し、リダイレクト自体はResponse.Redirectを使って 遷移させればよいと思います。 #って、なちゃさんが書いてますね。 | ||||
|
投稿日時: 2005-08-11 16:54
なちゃさん、早速の回答ありがとうございます。
なちゃさんの回答で理解出来ました。 RedirectFromLoginPageメソッドについて、勘違いをしていたようです。 最初の説明が足りなかったのですが・・・ loginページからのページ構成がウィザード方式で遷移するよう なアプリケーションを構築したいと考えておりました。 ページの遷移は、以下の通り。 login.aspx → Hoge1.aspx → Hoge2.aspx → Mainメニュー.aspx RedirectFromLoginPageを使用した時にMainメニュー.aspxで Sessionタイムアウトを検知すると、login.aspxにリダイレクトされます。 このときのURLは・・・ http://localhost/Webアプリ名/login.aspx?ReturnUrl=Main.aspx となり、再度login.aspxで認証をすると、Main.aspxに遷移してしまいました。 そこで、 RedirectFromLoginPageメソッドを止めて、SetAuthCookieメソッドで 認証Cookieのみを保持し、Hoge1.aspxへ遷移するようにしたところ、 期待通りの動作がしました。 ただし、相変わらず、URLが http://localhost/Webアプリ名/login.aspx?ReturnUrl=Main.aspx と表示されますが。 皆さん、どうもありがとうございました。m(_ _)m |
1