2

ですから、私のアプリケーションは、ログインすると1、2ページログインしたままになり、その後失われるという点で奇妙です。私の設定はこれです:

 <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>

ご協力いただきありがとうございます。

4

2 に答える 2

3

ここで私にとって2つのことが際立っています。まず、 ? の代わりに * ユーザーを許可していることです。ユーザー。* は匿名を意味し、? 認証されたことを意味します。次のように変更して、それが役立つかどうかを確認します...

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

2 番目に考えられるのは、slingExpiration="true" を認証ブロックに追加することです。これにより、ログインがスライディング ウィンドウになります。つまり、20 分間操作がない場合にのみログアウトされます。

<forms name=".ASPXFORMSAUTH" timeout="20" slidingExpiration="true" />
于 2009-02-03T19:29:52.277 に答える
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 設定は期待どおりに機能しません。

于 2009-02-03T19:37:00.687 に答える