Hey everyone.

I've stumbled on some unexpected behavior of @api_view decorator when 
working with LDAP authentication backend of django_auth_ldap. When I try to 
address request.user it returns as AnonymousUser.
Functions without @api_view against ldap users work as expected and 
@api_view against local users works fine as well. Also, when using 
rest_framework.permissions.IsAuthenticated it returns true even though 
request.user.is_authenticated returns false.

For example:
@api_view(['GET'])
def api(request):
    if request.user.is_authenticated:
        test_json = {
            'Is authenticated':str(request.user)
        }
    else:
        test_json = {
            'Not authenticated':{
                'user': str(request.user),
                'request_isauth': request.user.is_authenticated,
                'rest_isauth':bool(IsAuthenticated),
                'username': request.user.username,
            }
        }
    return Response(test_json)

When called from under authenticated ldap user it produces following 
results:
{ "Not authenticated": { "user": "AnonymousUser", "request_isauth": false, 
"rest_isauth": true, "username": "" } }

versions are:
Django==3.2.6
django-auth-ldap==3.0.0
djangorestframework==3.12.4

I'm not sure if I should report it as an issue for this project or ldap one.
Meanwhile I could use an advise on a workaround. Unfortunately 
IsAuthenticated is not enough for me. I also need to check user's superuser 
status and group membership.

Thanks,
Denis


-- 
You received this message because you are subscribed to the Google Groups 
"Django REST framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-rest-framework/58fd71c3-140f-4a3b-8229-e82534836171n%40googlegroups.com.

Reply via email to