2

WebMatrixを使用していて、Webサイトにログインシステムを適用しています。私は奇妙な問題に直面しています。私のウェブサイトはランダムにユーザーをログアウトし続けます。思いがけないことが起こります。私のコードだけでなく、WebMatrixサンプルプロジェクトでも発生します。

私のWeb.Configファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appSettings>
    <add key="loginUrl" value="~/login" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <sessionState timeout="20" />
    <!-- This is for links with incorrect file extensions -->
    <!-- This only handles .NET based errors, not classic web like HTML or ASP based extensions -->
    <customErrors mode="Off">
      <error statusCode="403" redirect="/Shared/Error404.cshtml" />
      <error statusCode="404" redirect="/Shared/Error404.cshtml" />
      <error statusCode="500" redirect="/Shared/Error500.cshtml" />
    </customErrors>
  </system.web>
  <system.webServer>
    <!-- This handles all other types of link errors -->
    <httpErrors errorMode="Custom">
      <remove statusCode="404" subStatusCode="-1" />
      <error statusCode="404" path="/Shared/Error404.cshtml" responseMode="ExecuteURL" />
    </httpErrors>
  </system.webServer>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.4.0" />
            <add invariant="System.Data.SqlServerCe.4.0" name="Microsoft® SQL Server® Compact 4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    </DbProviderFactories>
  </system.data>
</configuration>

セッションタイムアウトを20分と定義しました。私はユーザーにログインするのと同じ単純な方法を使用します。

    if (WebSecurity.Login(email, password, rememberMe)) {
        Context.RedirectLocal(returnUrl);
        return;
    } else {
        ModelState.AddFormError("The user name or password provided is incorrect.");
    }

これが、ユーザーがセキュリティで保護されたページにサインインしているかどうかを確認する方法です。

if (!WebSecurity.IsAuthenticated) {
    Response.Redirect("~/login", true);
}

グーグルで少し検索しましたが、WebMatrixWebSecurityがランダムにユーザーをログアウトすることについても不満を言っている人はほとんどいません。フォームの送信や単純なURLクリックなどのアクティビティが実行される場合があります。

何かアイデアや提案はありますか?誰かが私にRazorをダンプしてMVCに移行するように提案したことさえありますが、この問題はありません。それが本当かどうかはわかりません。

アップデート

すべての保護されたページ(ユーザーがログインしている必要があります)の上部に次のコードがあります。これが問題の原因になると誰かが思いますか?

// Ensure this page is not cached    
Response.Expires = -1;
Response.Cache.SetNoServerCaching();
Response.Cache.SetAllowResponseInBrowserHistory(false);
Response.CacheControl = "no-cache";
Response.Cache.SetNoStore();

ありがとう-FarazAzhar

4

1 に答える 1

0

さらに確認する必要があります。クッキーのログイン時間を増やすための奇妙な設定を覚えています。これが私の設定にあるもので、時間のあるものは他にありません:

  <system.web>
    <customErrors mode="RemoteOnly" defaultRedirect="~/error/"></customErrors>
    <compilation debug="true" targetFramework="4.0" />
    <authentication>
      <forms timeout="10080" />
    </authentication>
于 2013-02-05T18:02:29.340 に答える