我正在使用带有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之后进入控制器操作的原始网址是/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
这里我们首先看到两个问号。
然后我们有第三个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
。
有什么想法吗?