• 1401/07/17

اشکال در احراز هویت :

سلام خدمت استاد گرامی, من می خوام login کنم تو پروژه اگر از react-jwt استفاده کنم چون باید از useJwt استفاده بشه ایراد میگیره که باید در داخل هوک سفارشی یا کامپوننت تابعی باشد با اینحال یکبار در useEffect باید صدا زده شود که میشود خارج از این هوک آنرا صدا زد و مقدارش را وارد useEffect کرد (در فایل Toplearn) ولی در فایل userContext چون در تابع handleLogin ابتدا باید username و password از کاربر کرفته شود و به سمت سرور فرستاده شده تا توکن برگردد باید حتما داخل این تابع useJwt صدا زده شود که این باعث خطا میشود. لطفا راهنمایی بفرمایید.                                                                                                                                                                                                                                                                                                                                                                                                                                 

  • 1401/07/18
  • ساعت 17:04
const handleLogin = async event => {
        event.preventDefault();
        const user = { email, password };

        try {
            if (validator.current.allValid()) {
                dispatch(showLoading());
                const { status, data } = await loginUser(user);      
                if (status === 200) {
                    successMessage("Login was successful");
                    localStorage.setItem("token", data.token);
                    
                    //const {decodedToken} = useJwt(data.token);
                    
                    dispatch(addUser(decodedToken.name));
                    dispatch(hideLoading());
                    navigate("/", {replace:true});
                }
            } else {
                validator.current.showMessages();
                forceUpdate(1);
            }
        } catch (ex) {
            console.log(ex);
            dispatch(hideLoading());
            errorMessage("Problem was occured");
            
        }
    };

  • 1401/07/18
  • ساعت 23:16

سلام دوست من

به این صورت با جواب بده تست کن چون من تست نکردم اگر مشکلی بود با پروژه چک میکنم

import {useState} from "react";
import { useJwt } from "react-jwt";

const Toplearn = () => {
const {token, setToken} = useState("");
const { decodedToken, isExpired } = useJwt(token);

const handleLogin = async event => {
        event.preventDefault();
        const user = { email, password };

        try {
            if (validator.current.allValid()) {
                dispatch(showLoading());
                const { status, data } = await loginUser(user);      
                if (status === 200) {
                    successMessage("Login was successful");
                    localStorage.setItem("token", data.token);
                    setToken(data.token);
                    
                    dispatch(addUser(decodedToken.name));
                    dispatch(hideLoading());
                    navigate("/", {replace:true});
                }
            } else {
                validator.current.showMessages();
                forceUpdate(1);
            }
        } catch (ex) {
            console.log(ex);
            dispatch(hideLoading());
            errorMessage("Problem was occured");
            
        }
};
    
return ()

 }

 


logo-enamadlogo-samandehi