I am using a frontend framework (Vuejs <http://Vuejs.org>) and
django-rest-framework <http://www.django-rest-framework.org/> for the REST
API in my project. Also, for JSON web token authentication I am using
django-rest-framework-jwt
<http://getblimp.github.io/django-rest-framework-jwt/>. After a successful
login, the user is provided with a token. This token is passed into every
request to fetch any API related stuff.

Now I would like to integrate django channels
<https://channels.readthedocs.io/en/stable/index.html> into my project. So,
after successful login, when the token is received in the client side, I
would like to initiate a websocket connection. Then on the server
(consumer), I would like to check if the requested user is not anonymous.
If the requested user is anonymous, I would like to close the connenction
or else accept it.

This is how I have till now:

client side:

const socket = new WebSocket("ws://" + "dev.site.com"+ "/chat/");

routing.py:

channel_routing = [
    route("websocket.connect", ws_connect),
    ...
    ...]

consumers:

def ws_connect(message):

    # if the user is no anonymous
    message.reply_channel.send({
        "accept": True
    })

    # else
    message.reply_channel.send({
        "close": True
    })

In the documentation
<https://channels.readthedocs.io/en/stable/getting-started.html#authentication>
there's a decorator @channel_session_user_from_http which will provide a
message.user. But I am using a token instead of a session. How can I check
a user on connection when using token authentication, so that I can accept
or close connection. Or, if there is a better way could you please advise
me with it. Thank you.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CA%2B4-nGp5KhvYKdhD%3Dufus-jmHz%2BN%2BLPzOuX1R3V%2BPOYt8U4QXA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to