カスタムを実装する方法について、この質問からのアドバイスに従いました(データベースへの呼び出しを減らして取得するために、カスタムIPrincipal
に格納する必要があります)。
ここで、サイトにログインして約20分放置すると、サイトで何もせずにページを更新して、再度ログインを要求します。
カスタム実装されたIPrincipalには有効期限がありますか?また、これを延長する方法があるかどうか。userId
userId
1 に答える
IPrincipal
実装クラスが従わなければならない単なる契約です。
タイムアウトは実際には実装によって異なりますが、ASP .NETアプリでの大きな考慮事項は、formsAuthenticationタイムアウト値である必要があります。
これは、ASP.NETがユーザーからの入力なしにセッションを開いたままにする時間になります。その後、ログインしたユーザーに関する情報は保持されません。Context.User.Identity.Name
ほとんどのiPrincipal実装は、データベース内のエントリとの照合に依存しています。フォーム認証のタイムアウトに達すると、その値(およびIsAuthenticated
== true)のステータスが失われ、別のログインが要求されます。タイムアウトの単純な延長が必要な場合は、最初にその値を微調整してみてください。
長期的な解決策(つまり、「ログイン状態を維持する」機能)を探している場合、最も一般的なアプローチは、Cookieを介してユーザーのブラウザーにトークンを送信することです。これは、サイトへのその後のアクセス時にチェックされます。
通常、ここでの戦略は次のとおりです。-
- クッキーを確認してください
- Cookieからトークン値をプルする
- 一致するユーザーが見つかった場合は、ユーザーに自動ログインして、FormsAuthenticationチケットを渡します。
ここでのベストプラクティスに関する記事:-
http://jaspan.com/improved_persistent_login_cookie_best_practice