djangoのユーザーモデルにはlast_login
フィールドがあります。これは、すべてのユーザーがサイトを離れるたびにログアウトする場合に最適ですが、そうでない場合はどうなりますか?
ログアウトしたことがないユーザーとそのサイトでのアクティビティを追跡するにはどうすればよいですか?
djangoのユーザーモデルにはlast_login
フィールドがあります。これは、すべてのユーザーがサイトを離れるたびにログアウトする場合に最適ですが、そうでない場合はどうなりますか?
ログアウトしたことがないユーザーとそのサイトでのアクティビティを追跡するにはどうすればよいですか?
last_activity
ユーザー プロファイル (またはカスタム ユーザー モデル)にフィールドが必要です。このフィールドは、リクエストごとに更新されます。これを実現するには、カスタム ミドルウェアが必要です。
プロファイル/ミドルウェア.py:
from django.utils import timezone
from myproject.profiles.models import Profile
class UpdateLastActivityMiddleware(object):
def process_view(self, request, view_func, view_args, view_kwargs):
assert hasattr(request, 'user'), 'The UpdateLastActivityMiddleware requires authentication middleware to be installed.'
if request.user.is_authenticated():
Profile.objects.filter(user__id=request.user.id) \
.update(last_activity=timezone.now())
このミドルウェアを設定ファイルに追加します。
MIDDLEWARE_CLASSES = (
# other middlewares
'myproject.profiles.middleware.UpdateLastActivityMiddleware',
)
私は質問が古いことを知っています...そして確かにそれはすでに解決されています...しかし、ここに私の貢献があります... djangoの新しいバージョンでは、次を使用できます:
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
ユーザーがブラウザを閉じない場合、セッションの時間制限を設定できます...
SESSION_COOKIE_AGE = 60 * 60
「SESSION_COOKIE_AGE」の場合、正しく覚えていれば秒単位で定義されています。ここで詳細を見ることができます...推奨される読書は、セッションに関するdjango独自のドキュメントでもあります...