2009-02-03 3 views
3

내 응용 프로그램이 로그인 할 때 한 페이지 또는 두 페이지 동안 로그인 상태를 유지하는 것이 이상하다는 사실이 이상합니다. 내 설정은 다음과 같습니다.ASP.NET 멤버쉽 인증 된 문제가 남아 있습니다.

<authentication mode="Forms">  
    <forms name=".ASPXFORMSAUTH" timeout="20"/> 
    </authentication> 

<authorization> 
<allow users="*" /> 
</authorization> 
<membership defaultProvider="MySqlConnection" userIsOnlineTimeWindow="45"> 
<providers> 
    <clear /> 
    <add name="MySqlConnection" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MySqlConnection" 
applicationName="HQChannel" 
enablePasswordRetrieval="true" 
enablePasswordReset="true" 
requiresQuestionAndAnswer="false" 
requiresUniqueEmail="true" 
passwordFormat="Hashed" 
minRequiredNonalphanumericCharacters="0" 
minRequiredPasswordLength="6" /> 
</providers> 
</membership> 

도움 주셔서 감사합니다.

답변

3

2 가지가 눈에 stand니다. 첫 번째는 사용자 대신에 * 사용자를 허용한다는 것입니다. 사용자. *는 익명을 의미합니까? 인증 된 것을 의미합니다. 나는

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

두번째 생각은 당신이 당신의 인증 블록에 slidingExpiration = "true"로 추가 할 거라고 것 ...이 도움이되는지 다음 &로 변경 것입니다. 그들은 단지 비활성 20 분 로그 아웃받을 수 있도록

<forms name=".ASPXFORMSAUTH" timeout="20" slidingExpiration="true" /> 
1

나는 또한 코드를 확인 것입니다 ... 그리고 폼 인증 티켓이 함께 무시되고 있는지 - 즉 슬라이딩 윈도우에 로그인 할 수 있습니다 아래의 샘플과 다른 시간 초과.

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket 
(
    1, // version 
    txtEmail.Text, // name 
    DateTime.Now, // issueDate 
    DateTime.Now.AddMinutes(30), // expiration 
    false, // isPersistent 
    roles, // userData 
    FormsAuthentication.FormsCookiePath // cookiePath 
); 

설정이 코드에서 명시 적으로 덮어 쓰여지면 web.config 설정이 예상대로 작동하지 않습니다.