1

ユーザー認証を有効にするために、プロジェクトにいくつかのコードをラップしました。FormsAuthenticationと同様に使用しているよう.NetCasAuthenticationです。ユーザーがログインしようとすると、URL が に保存され ている外部ページにユーザーをリダイレクトし、DotNetCasClient.CasAuthentication.FormsLoginUrlログイン試行が成功すると、User.Identityオブジェクトが設定されます。ここまでは順調ですね。

では、ユーザーを適切にサインアウトするにはどうすればよいでしょうか。

私はもう試した

  • FormsAuthentication.SignOut()
  • ここで提案されているように、いくつかの Cookie を期限切れにする
  • さらに、User オブジェクトを明示的に無効にします。HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(string.Empty), null);

しかし、アプリケーションに別のリクエストを送信すると、そのユーザーの情報をどこかで見つけることができます。

CasAuthentication は Cookie に保存されますか? それとも、外部ログイン ページで定義されている固有の場所にある可能性が高いですか? 対応する外部ログアウト ページにリダイレクトするオプションがありますが、そのページにリダイレクトしてアプリケーションを終了せずにそれを行う方法がわかりません。また、そうしたくありません。

読んでくれてありがとう。

4

1 に答える 1

1

ファントム ログアウトの原因はまだよくわかりませんが、抱えていた問題を修正することができました。

アプリケーションのログイン ページとログアウト ページに iframe を含めました。そのソース (src) は、それぞれ外部のログイン ページとログアウト ページを指しています。FormsAuthentication クレデンシャルを検証した後にどこにリダイレクトするかを CAS に伝えるには、ログイン iframe の src url の最後に、次のようなクエリ文字列を追加する必要がありました。?TARGET=http%3a%2f%2fsome.url.aspx

(ターゲット URL はエスケープされます。'%3a' はコロン (:) の URL エンコードであり、'%2f' はスラッシュ (/) です)

たとえば、外部ログイン URL が で、ログイン後https://www.externalsite.com/loginにウェルカム ページにリダイレクトしたいhttp://www.mysite.com/welcome.aspx場合、アプリケーションのログイン ページ iframe src は次のようにする必要があります。

`https://www.externalsite.com/login?TARGET=http%3a%2f%2fwww.mysite.com%2fwelcome.aspx`

それをした後、すべてがうまくいっているようです。

TARGET クエリ文字列のドキュメントは見つかりませんでしたが、ここで説明されている「targetService」パラメーターに関連しているようです。

于 2013-08-01T20:25:27.620 に答える