I’m trying to override is_authenticated in my custom authentication. I have something simple (to start with) like this:
class MyAuthentication(BasicAuthentication):
def __init__(self, *args, **kwargs):
super(MyAuthentication, self).__init__(*args, **kwargs)
def is_authenticated(self, request, **kwargs):
return True
then in my ModelResource I have
class LoginUserResource(ModelResource):
class Meta:
resource_name = 'login'
queryset = User.objects.all()
excludes = ['id', 'email', 'password', 'is_staff', 'is_superuser']
list_allowed_methods = ['post']
authentication = MyAuthentication()
authorization = DjangoAuthorization()
I keep getting a 500 error back with "error_message": "column username is not unique". I only have one username in the db and it’s the user I am trying to authenticate.
Any ideas as to why it’s returning this error? How would I allow an api client to login?
Thanks for the help.
Your approach will try to create a new user with the username that you are authenticating with. This will bubble up at the DB layer, as you’ve noticed, that such a user already exists.
What you want is to create a
UserResource, add a method on it that users can post to and login with data passing in username/password.Now you can do send a POST to
http://hostname/api/user/loginwith data{ 'username' : 'me', 'password' : 'l33t' }.