我在使用 MVC4/IIS/Forms 身份验证时遇到了一个奇怪的间歇性问题。
我有两个站点,它们使用 SSO 将控制权传递给彼此。大多数情况下,切换会正确进行,并且用户会按预期重定向到下一个站点。但是,在某些情况下,即使发送了有效的 SSO 信息,也会要求用户重新登录。 SSO
方法用 [AllowAnonymous]
属性修饰,web.config 也有一个位置条目授予对 /account 的访问权限/sso 给所有用户。
它似乎是在第一次访问目标站点时发生的 - 一旦应用程序池预热,问题就会消失。
其他几点:
1 这两个站点都是 .net 4,因此不应该有任何遗留加密问题。
2. 这个问题很少发生(<10% 的时间)所以代码本身应该是正确的
3. 在本地 win7x64 上托管 IIS 7.5,而 azure - 在两个地方都发生
4. 似乎与浏览器无关
<location path="account/sso">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
[Authorize]
public class AccountController : BaseControllerTestable
{
public AccountController()
: base()
{
}
[AllowAnonymous]
public ActionResult SSO(string AuthToken, string Target)
{
//SSO logic here
}
}
有什么想法吗?
最佳答案
您的 Controller 类上有一个 Authorize 属性,这意味着您的 SSO 方法将应用 AllowAnonymous 和 Authorize。在这种情况下,Authorize 属性看起来需要删除。
关于c# - MVC4/IIS/Forms 身份验证 SSO 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15946787/