使用查询字符串

时间:2011-05-24 12:49:57

标签: asp.net-mvc

我只是将一个单点登录提供程序集成到我的应用程序中,当它重定向回请求的页面时,它现在发送一个查询字符串参数,这会导致页面无法加载。它的设置方式是:

  • 我在localhost / AppName / Controller上有一个控制器,其Index方法需要[Authorize]
  • 表单身份验证重定向到SSO
  • SSO重定向到localhost / AppName / Controller /?ticket = stringvalue
  • 页面未加载(浏览器有“无法显示网页”消息);删除?票证业务会使页面加载。

我的索引方法如下所示:

public ActionResult Index(string ticket)

我认为会接受查询字符串参数。我使用的是默认路由配置,即:

routes.MapRoute(
    // Route name
    "Default", 
    // URL with parameters
    "{controller}/{action}/{id}", 
    // Parameter defaults
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
);

1 个答案:

答案 0 :(得分:1)

显然有一些令人愚蠢的事情 - 因为没有充分的理由说明为什么这不起作用。

我敢打赌,如果你取消[授权]属性,你会发现它适用于网址中的?ticket=[value]位。

如果是这样,那么我认为Forms auth会陷入重定向循环(浏览器,过一会儿就会拒绝继续) - 我认为它不会将当前User视为{{1}所以重定向到你的SSO。 SSO表示用户已登录,因此使用ticket参数重定向 - ad nauseam。

您可以使用VS调试器简单地调试它,并对您的操作方法进行细分。同样在Http级别进行调试通常更容易:下载Fiddler,然后在启动并运行后使用特殊名称http://ipv4.fiddler而不是http://localhost点击您的网站。

你的代码必须有更多你没有包含的内容 - 大概是某个地方你有代码拦截IsAuthenticated=true并设置用户在MVC操作方法启动之前进行身份验证?如果是这样 - 我认为这是失败的。