0

私は自分のサイトでフォームベースの認証を使用しています。ログインページには次のものがあります。

FormsAuthentication.SetAuthCookie(user.userName, true)

ユーザーが認証されているかどうかを確認したい場合は、次のようにします。

HttpContext.Current.User.Identity.IsAuthenticated

Asp.netメンバーシップを使用していませんが、代わりにSQL-DB検証 を使用していますが、Asp.netメンバーシップを使用する必要がありますか?

これはほとんどの場合私のために働いています問題は時々5時間後か30時間後に何かがアプリケーションプールが何らかの理由で再起動されることです(私は共有サーバー上にいます)そしてその後「User.Identity.IsAuthenticated」ユーザーが再度ログインするまで、毎回falseで戻ります。

クライアントがまだ永続的なauthCookieを持っていることがわかるので、これは私には奇妙です。なぜユーザーは認証されないのですか?

私のWeb.Configリファレンス:

<authentication mode="Forms">
<forms
name="AuthCookie"
loginUrl="~/mySite/ManageLogin.aspx"
timeout="5256000"/>
</authentication>

どんな助けでもありがたいです。

私のサイトwww.mentallica.co.il

4

1 に答える 1

1

これは、アプリケーションの開始時にマシンキーが自動生成されることが原因である可能性があります。これを防ぐには、web.configでアプリのマシンキーを指定します。

<machineKey
    validationKey="410E4E2B06BE457709F2D8C72BB02957A3B4E8BA327F3A6103696857AD3A88598D454489B9D4CAAFC2D5E35E8795B311EE2E94DAA485FD64D7184272A4AE4D8B"
    decryptionKey="EFAFA0917D0D8F137F05B26AE053397C48D34DE688E73483D15C8EDAF0D6FD4F"
    validation="SHA1"
    decryption="AES" /> 

これは使用しないでください。http://aspnetresources.com/tools/machineKeyで簡単に作成できます。

マシンキーの詳細:http://msdn.microsoft.com/en-us/library/ff649308.aspx

于 2013-01-28T20:39:47.270 に答える