0

I'm using mongoengine + django. I need to use Token-based Authentication. I googled a lot but found with django.contrib.auth. Somewhere I found mongoengine.django.auth but it doesn't work for me.

Here is the link where I found.

May be, I get downvote for this question but my question is simple.

Token-based Authentication using django+mongoengine. Most of them are using mysql but I have mongoengine.

If it is not possible to implement this scenario. Please suggest me something else where I can achieve my goal.

Community
  • 1
  • 1
iNikkz
  • 3,729
  • 5
  • 29
  • 59

1 Answers1

0

Token Authentication

** Create a Token Collection

class MongoToken(Document):
    key = StringField(max_length=44)
    user = ReferenceField('**USERMODEL NAME**', required=True)
    created = DateTimeField()

    def __init__(self, *args, **values):
        super(MongoToken, self).__init__(*args, **values)
        # super().__init__(*args, **values)
        if not self.key:
            self.key = self.generate_key()

    def save(self, *args, **kwargs):
        if not self.id:
            self.created =  datetime.now()

        return super(MongoToken, self).save(*args, **kwargs)
        # return super().save(*args, **kwargs)

    def generate_key(self):
        return binascii.hexlify(os.urandom(22)).decode()

    @staticmethod
    def token_validator(token=None):
        token_user = MongoToken.objects.get(key=token)
        if token_user:
            user = get_document_or_404( **USERMODEL NAME**,id=str(token_user.user.id))
            return user
        else:
            return False    

    def __unicode__(self):
        return self.key

Create Token :

[1]: token,created = MongoToken.objects.get_or_create(user=**user_object**)
[2]: user_token = token.key ### a12222dsdasdasd45787784546

Token Validation [ views.py ] [CBV]
[3]:

def post(self, request):
        user_token=request.QUERY_PARAMS['token']
        user_token = str(user_token)
        return_data = {}
        try:
            ### This query will return while it got success
            user = MongoToken.token_validator(token=user_token)

            return_data['status'] = 200
            return_data['message'] = 'success'
        except:
            return_data['status'] = 404
            return_data['message'] = "User Details not found"
Cadmus
  • 665
  • 7
  • 13