Entonces, en mi vista de inicio de sesión, quiero verificar si la dirección devuelta por metamask corresponde a la dirección de la billetera del usuario que intenta iniciar sesión.
Este es el código javascript que estoy usando para hacerlo:
async function loginWithMetaMask() { const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' }) .catch((e) => { console.error(e.message); return; }) if (!accounts) { return; } window.userWalletAddress = accounts[0]; console.log(accounts[0]); let data = {address : window.userWalletAddress}; const request = new XMLHttpRequest(); request.open('POST', 'accounts/login', true); request.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); request.onload = () => { const data = JSON.parse(request.responseText); console.log(data); } request.send(data); return false; }como puedes ver :
let data = {address : window.userWalletAddress}; const request = new XMLHttpRequest(); request.open('POST', 'accounts/login', true); request.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); request.onload = () => { const data = JSON.parse(request.responseText); console.log(data); } request.send(data); este fragmento de código de la función loginWithMetaMask() es responsable de enviar el objeto JSON cuando se realiza una solicitud POST a la URL de 'cuentas/inicio de sesión'.
Esta es mi vista Django:
def post(self, request):#, address): username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if request.is_ajax(): print('connected') data = {'address': request.POST.get('address', None)} address = data[address] print(address) else: return render(request, self.template, { 'message': "MetaMask not onnected" }) #go ahead and authenticate the user pero request.is_ajax() devuelve falso y no obtengo datos en mi opinión.
¿Puede alguien mostrarme la forma correcta de hacer esto?
Gracias