﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
36819	Async login does not reuse authenticated user instance	Mykhailo Havelia		"**Problem**

When using alogin, calling `request.auser` does not reuse the already authenticated user instance, resulting in redundant authentication requests.

**Details**

**Middleware Setup**

{{{
class AuthenticationMiddleware(MiddlewareMixin):
    def process_request(self, request):
        ...
        request.user = SimpleLazyObject(lambda: get_user(request))
        request.auser = partial(auser, request)
}}}

**Sync Login**

{{{
def login(request, user, backend=None):
    ...
    request.user = user
}}}

**Async Login**

{{{
def alogin(request, user, backend=None):
    ...
    request.user = user
}}}

**Problematic Behavior**

After calling `alogin(request, user)`, `request.user` is set to the authenticated user instance. However, `request.auser()` does not use this instance and instead performs authentication again, relying on its own `_acached_user` cache.

**Expected Behavior**

After `alogin`, both `request.user` and `request.auser()` should reference the same user instance, avoiding duplicate authentication.

**Suggested Solution**

Set a shared cache. `request._cached_user = user`, in `alogin`, so both sync and async accessors use the same instance.

{{{
async def alogin(request, user, backend=None):
    ...
    request.user = user
    request._cached_user = user  # <-- suggested addition

async def auser(request):
    if not hasattr(request, ""_cached_user""):   # <-- suggested change (_acached_user -> _cached_user) 
        request._cached_user = await auth.aget_user(request)
    return request._cached_user
}}}

See related discussion: https://github.com/django/django/pull/16552#discussion_r1122929933
"	Cleanup/optimization	closed	contrib.auth	6.0	Normal	wontfix	async auser alogin cache	Mykhailo Havelia	Unreviewed	0	0	0	0	0	0
