Membershipprovider: автоматический выход из системы по окончании сеанса - PullRequest
1 голос
/ 09 сентября 2010

У меня есть некоторые проблемы с тем, чтобы мой веб-сайт автоматически выходил из аутентифицированного пользователя после завершения сеанса (пользователь закрывает браузер).

Это то, что у меня есть в моем web.config:

<authentication mode="Forms">
    <forms name="AuthCookie" protection="All" loginUrl="~/default.aspx" path="/" cookieless="UseCookies" timeout="2592000"/>
</authentication>

<authorization>
    <allow users="?" />
</authorization>

<membership defaultProvider="ASPPGSqlMembershipProvider" userIsOnlineTimeWindow="20">
    <providers>
        <clear />
        <add name="AspNetSqlMemberShipProvider" applicationName="umbraco4" type="System.Web.Security.SqlMembershipProvider" connectionStringName="UmbracoDb" requiresUniqueEmail="true" enablePasswordReset="true" enablePasswordRetrieval="false"/>
        <add name="UsersMembershipProvider" applicationName="umbraco4" type="umbraco.providers.UsersMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" />
        <add name="ASPPGSqlMembershipProvider" applicationName="umbraco4"
            passwordStrengthRegularExpression="" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0"
            enablePasswordRetrieval="false"
            enablePasswordReset="true"
            requiresQuestionAndAnswer="false"
            requiresUniqueEmail="true"
            forumUpfileFolderPath="D:\www\files"
            type="ASPPG.MembershipProviders.ASPPGSqlMembershipProvider, ASPPGSiteIntegrationPackage"/>
    </providers>
</membership>

Вот как я вхожу в систему:

if (Membership.ValidateUser(txtUserName.Text, txtPasssword.Text)) {
    HttpCookie cookie = FormsAuthentication.GetAuthCookie(txtUserName.Text, false);
    cookie.Expires = DateTime.Now.AddDays(1);
    cookie.Domain = ConfigurationManager.AppSettings["Level2DomainName"];
    HttpContext.Current.Response.Cookies.Add(cookie);
    Response.Redirect(Request.Url.ToString());
}

Когда я закрываю браузер, пользователь все равно входит в систему. Как заставить сайт забыть пользователя через опцию,так что пользователь сам может решить, должен ли сайт помнить или нет?

Заранее спасибо :))

M

1 Ответ

5 голосов
/ 09 сентября 2010

Вы пытались НЕ установить cookie.Expires или хотя бы установить его на DateTime.MinValue для пользователя, который не хочет, чтобы его запомнили?

С MSDN :

Установка для свойства Expires значения MinValue делает этот файл cookie сеанса, который является его значением по умолчанию.

...