ASP.NET MVC で .NET CAS クライアントを使用しています。ユーザーが SSO にログインして同じページに留まることができるリンクがあります。リンクは に移動し/MyApp/Account/SsoLogin?returnUrl=%2fMyApp%2fMyController%2fMyAction%3fFirstParameter%3d12345%26SecondParameter=54321
ます。デコードされてreturnUrl
いる必要があります/MyApp/MyController/MyAction?FirstParameter=12334&SecondParameter=54321
残念ながら、CAS の後にコントローラー アクションで取得している生の URL は/Account/SsoLogIn?returnUrl=/MyController/MyAction?FirstParameter&SecondParameter=54321
.
そのため、リターン URL がデコードされ、最初のパラメーターの値が失われています。これは、誰かがすでに SSO で認証されている場合と、まだ認証されていない場合の両方に当てはまります。Firebug を開いて、すでに認証されている場合に何が起こっているかを確認しました。これが私が持っているものです:
302, location is https://ssoserver/cas/login?service=http%3a%2f%2flocalhost%3a10001%2fMyApp%2fAccount%2fSsoLogIn%3freturnUrl%3d%2fMyApp%2fMyController%2fMyAction%3fFirstParameter%3d12345%26SecondParameter%3d54321
次に、別の 302 があります。
302, location is http://localhost:10001/MyApp/Account/SsoLogIn?returnUrl=/MyApp/MyController/MyAction?FirstParameter=12345&SecondParameter=54321&ticket=someUglyString
ここでは、最初に 2 つのクエスチョン マークが表示されます。
次に、3 番目の 302 があります。
302, location is http://localhost:10001/MyApp/Account/SsoLogIn?returnUrl=/MyApp/MyController/MyAction?FirstParameter=12345&SecondParameter=54321
二重の疑問符の詳細。最後の 302:
302, location is /MyApp/MyController/MyAction?FirstParameter&SecondParameter=54321
/MyApp/MyController/MyAction?FirstParameter&SecondParameter=54321
次に、を読み込もうとして 500 エラーが発生します/MyApp/MyController/MyAction?FirstParameter=12345&SecondParameter=54321
。
何か案は?