SetAuthCookie不在我们的测试服务器上设置cookie

时间:2014-09-10 11:30:08

标签: c# asp.net cookies asp.net-membership iis-8

我正在尝试在新环境中设置我的网站,并且我遇到了会员提供商的问题。

我可以调用Membership.ValidateUser,它应该返回true和false。那是完美的。

但是,在我的新环境中,cookie永远不会设置。我可以在localhost和我们的生产服务器上看到,它设置了一个名为CommunityServer的cookie,但不在我们的新环境中。

Web.config代码

<authentication mode="Forms">
      <!-- development -->
      <forms name=".CommunityServer" protection="All" timeout="60000" loginUrl="~/user/login" slidingExpiration="true"/>
      <!-- deployment -->
      <!--<forms name=".CommunityServer" domain="domain.com" protection="All" timeout="60000" loginUrl="~/user1.aspx" slidingExpiration="true" />-->
    </authentication>
    <authorization>
      <allow users="?"/>
    </authorization>

登录代码

if (String.IsNullOrEmpty(UsernameLogin)) {
                ModelState.AddModelError("UsernameLogin", Strings.Error_NoLoginUsernameEntered);
            }
            if (String.IsNullOrEmpty(PasswordLogin)) {
                ModelState.AddModelError("PasswordLogin", Strings.Error_NoLoginPasswordEntered);
            }
            if (!Membership.ValidateUser(UsernameLogin, PasswordLogin)) {
                ModelState.AddModelError("UsernameLogin", Strings.Error_LoginFailed);
            }


            if (!ModelState.IsValid) {
                return View(new UserLoginModel() { Title = String.Format(Strings.Site_Title, Strings.UserLogin_Title) });
            }

            FormsAuthentication.SetAuthCookie(UsernameLogin, true);

            // we know this code is run and I am being redirected to the return url
            if (!String.IsNullOrEmpty(ReturnUrl)) {
                return Redirect(ReturnUrl);
            }

关于为什么我们的cookie永远不会被设置的暗示的任何想法?它是一个IIS 8服务器。

1 个答案:

答案 0 :(得分:2)

在身份验证参数上添加domain="domain.com",说明cookie对整个域和正确的域有效,否则可能无法设置。< / p>

<authentication mode="Forms">
      <!-- development -->
      <forms name=".CommunityServer" domain="domain.com" protection="All" timeout="60000" loginUrl="~/user/login" slidingExpiration="true"/>