1

カスタムを実装する方法について、この質問からのアドバイスに従いました(データベースへの呼び出しを減らして取得するために、カスタムIPrincipalに格納する必要があります)。 ここで、サイトにログインして約20分放置すると、サイトで何もせずにページを更新して、再度ログインを要求します。 カスタム実装されたIPrincipalには有効期限がありますか?また、これを延長する方法があるかどうか。userIduserId


4

1 に答える 1

1

IPrincipal実装クラスが従わなければならない単なる契約です。

タイムアウトは実際には実装によって異なりますが、ASP .NETアプリでの大きな考慮事項は、formsAuthenticationタイムアウト値である必要があります。

http://msdn.microsoft.com/en-us/library/system.web.configuration.formsauthenticationconfiguration.timeout.aspx

これは、ASP.NETがユーザーからの入力なしにセッションを開いたままにする時間になります。その後、ログインしたユーザーに関する情報は保持されません。Context.User.Identity.NameほとんどのiPrincipal実装は、データベース内のエントリとの照合に依存しています。フォーム認証のタイムアウトに達すると、その値(およびIsAuthenticated== true)のステータスが失われ、別のログインが要求されます。タイムアウトの単純な延長が必要な場合は、最初にその値を微調整してみてください。

長期的な解決策(つまり、「ログイン状態を維持する」機能)を探している場合、最も一般的なアプローチは、Cookieを介してユーザーのブラウザーにトークンを送信することです。これは、サイトへのその後のアクセス時にチ​​ェックされます。

通常、ここでの戦略は次のとおりです。-

  • クッキーを確認してください
  • Cookieからトークン値をプルする
  • 一致するユーザーが見つかった場合は、ユーザーに自動ログインして、FormsAuthenticationチケットを渡します。

ここでのベストプラクティスに関する記事:-

http://jaspan.com/improved_persistent_login_cookie_best_practice

于 2012-10-30T22:01:47.707 に答える