Como autenticar um usuário na conexão websocket nos canais django ao usar autenticação de token
Estou usando uma estrutura de front-end (Vuejs) edjango-rest-framework para a API REST no meu projeto. Além disso, para autenticação de token da Web JSON, estou usandodjango-rest-framework-jwt. Após um login bem-sucedido, o usuário recebe um token. Esse token é passado para todas as solicitações para buscar qualquer material relacionado à API.
Agora eu gostaria de integrarcanais de django no meu projeto. Portanto, após o login bem-sucedido, quando o token é recebido no lado do cliente, eu gostaria de iniciar uma conexão com o websocket. Em seguida, no servidor (consumidor), gostaria de verificar se o usuário solicitado não é anônimo. Se o usuário solicitado for anônimo, eu gostaria de fechar a conexão ou aceitá-la.
É assim que eu tenho até agora:
lado do cliente:
const socket = new WebSocket("ws://" + "dev.site.com"+ "/chat/");
routing.py:
channel_routing = [
route("websocket.connect", ws_connect),
...
...
]
consumidores:
def ws_connect(message):
# if the user is no anonymous
message.reply_channel.send({
"accept": True
})
# else
message.reply_channel.send({
"close": True
})
Nodocumentação tem um decorador@channel_session_user_from_http
que fornecerá umamessage.user
. Mas estou usando um token em vez de uma sessão. Como posso verificar um usuário na conexão ao usar a autenticação de token, para que eu possa aceitar ou fechar a conexão. Ou, se houver uma maneira melhor, você poderia me aconselhar com isso. Obrigado.