Я разрабатываю этот проект, используя Spring Boot для бэкэнда и React для внешнего интерфейса, я соединил этот интерфейс и серверную часть. Затем регистрация и вход в систему работают без каких-либо ошибок, но когда я собираюсь получить данные для входа в систему для отображения внешнего интерфейса, появляется сообщение об ошибке. Я создал функцию внешнего интерфейса. при нажатии кнопки «Войти/Зарегистрироваться» происходит переход к профилю пользователя, который функционирует в зависимости от роли (ПОЛЬЗОВАТЕЛЬ/ВЛАДЕЛЕЦ/АДМИН). но соответствующие данные пользователя для входа в систему не могут отображаться. Особенность заключается в том, что когда я запускаю этот API в почтальоне, эта функция работает без каких-либо ошибок.
[img]https://i.sstatic .net/MQdnDDpB.jpg[/img]
import axios from 'axios';
import React, { useState } from 'react';
import { useNavigate, useLocation } from 'react-router-dom'; // Import useNavigate hook
import ForgotPasswordPopup from '../components/ForgotPasswordPopup';
import EnterCodePopup from '../components/EnterCodePopup';
import ChangePasswordPopup from '../components/ChangePasswordPopup';
import './login.css';
import MailOutlineIcon from '@mui/icons-material/MailOutline';
import LockIcon from '@mui/icons-material/Lock';
import CloseIcon from '@mui/icons-material/Close';
import { GoogleLogin } from '@react-oauth/google'; // Import from @react-oauth/google
export default function Login() {
const [step, setStep] = useState(null);
const navigate = useNavigate(); // Initialize navigate function
const [email, setEmail] = useState(''); // State for email input
const [password, setPassword] = useState('');
const location = useLocation();
const [error, setError] = useState(''); // State to show login errors
// Get the page the user was trying to access before being redirected to login
const redirectTo = location.state?.from?.pathname || '/'; // Defaults to home page if no previous page
const openForgotPassword = () => setStep('forgot');
const openEnterCode = () => setStep('code');
const openChangePassword = () => setStep('change');
const closePopup = () => setStep(null);
// Navigate to the signup page when the signup button is clicked
const handleSignup = () => {
navigate('/signup'); // Navigate to your signup page
};
// Function to handle Google Login success
const handleGoogleSuccess = (response) => {
console.log('Google login successful:', response);
localStorage.setItem('authToken', 'google-auth-token');
navigate(redirectTo); // Navigate to the intended page after successful login
};
// Function to handle Google Login failure
const handleGoogleFailure = (error) => {
console.log('Google login failed:', error);
// Handle failed login here
};
// Function to go back to the previous page
const handleClose = () => {
navigate(-1); // Navigates back to the previous page
};
// Handle email/password form submission
const handleSignIn = async (e) => {
e.preventDefault();
setError(''); // Reset error message
try {
// Send a POST request to the backend API
const response = await axios.post(${process.env.REACT_APP_API_URL}/SignInUser/SignIn, {
email,
password,
});
const { role, token } = response.data; // Assuming your backend returns a user object with a role
console.log('Email login successful');
// Store authentication token in localStorage
localStorage.setItem('authToken',token); // Assuming the token is returned
// Redirect based on user role
switch (role) {
case 'User':
navigate('/userprofile');
break;
case 'Owner':
navigate('/ownerprofile');
break;
case 'Admin':
navigate('/adminprofile');
break;
default:
navigate('/'); // Fallback in case role is unrecognized
}
} catch (error) {
if (error.response) {
// Handle specific errors based on the response from the backend
if (error.response.status === 401) {
setError('Incorrect email or password');
} else {
setError('Login failed. Please try again.');
}
} else {
setError('Login failed. Please try again.');
}
}
};
return (
[img]/images/1.png[/img]
Don't have an account?
SIGN UP
[img]/images/1.1.png[/img]
{/* Update CloseIcon to use handleClose on click */}
Don't have an account?
SIGN UP
Sign in Here
setEmail(e.target.value)} // Update email state
/>
setPassword(e.target.value)} // Update password state
/>
Forget Your Password?
SIGN IN
{error &&
{error}
}
OR
{/* Use GoogleLogin from @react-oauth/google */}
(
[img]/images/1.2.png[/img]
Google
)}
/>
{step === 'forgot' && }
{step === 'code' && }
{step === 'change' && }
);
}
Я разрабатываю этот проект, используя Spring Boot для бэкэнда и React для внешнего интерфейса, я соединил этот интерфейс и серверную часть. Затем регистрация и вход в систему работают без каких-либо ошибок, но когда я собираюсь получить данные для входа в систему для отображения внешнего интерфейса, появляется сообщение об ошибке. Я создал функцию внешнего интерфейса. при нажатии кнопки «Войти/Зарегистрироваться» происходит переход к профилю пользователя, который функционирует в зависимости от роли (ПОЛЬЗОВАТЕЛЬ/ВЛАДЕЛЕЦ/АДМИН). но соответствующие данные пользователя для входа в систему не могут отображаться. Особенность заключается в том, что когда я запускаю этот API в почтальоне, эта функция работает без каких-либо ошибок. [img]https://i.sstatic .net/MQdnDDpB.jpg[/img]
[code]import axios from 'axios'; import React, { useState } from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; // Import useNavigate hook import ForgotPasswordPopup from '../components/ForgotPasswordPopup'; import EnterCodePopup from '../components/EnterCodePopup'; import ChangePasswordPopup from '../components/ChangePasswordPopup'; import './login.css'; import MailOutlineIcon from '@mui/icons-material/MailOutline'; import LockIcon from '@mui/icons-material/Lock'; import CloseIcon from '@mui/icons-material/Close'; import { GoogleLogin } from '@react-oauth/google'; // Import from @react-oauth/google
export default function Login() { const [step, setStep] = useState(null); const navigate = useNavigate(); // Initialize navigate function const [email, setEmail] = useState(''); // State for email input const [password, setPassword] = useState(''); const location = useLocation(); const [error, setError] = useState(''); // State to show login errors
// Get the page the user was trying to access before being redirected to login const redirectTo = location.state?.from?.pathname || '/'; // Defaults to home page if no previous page
// Navigate to the signup page when the signup button is clicked const handleSignup = () => { navigate('/signup'); // Navigate to your signup page };
// Function to handle Google Login success const handleGoogleSuccess = (response) => { console.log('Google login successful:', response); localStorage.setItem('authToken', 'google-auth-token'); navigate(redirectTo); // Navigate to the intended page after successful login };
// Function to handle Google Login failure const handleGoogleFailure = (error) => { console.log('Google login failed:', error); // Handle failed login here };
// Function to go back to the previous page const handleClose = () => { navigate(-1); // Navigates back to the previous page };
try { // Send a POST request to the backend API const response = await axios.post(${process.env.REACT_APP_API_URL}/SignInUser/SignIn, { email, password, });
const { role, token } = response.data; // Assuming your backend returns a user object with a role
console.log('Email login successful');
// Store authentication token in localStorage localStorage.setItem('authToken',token); // Assuming the token is returned
// Redirect based on user role switch (role) { case 'User': navigate('/userprofile'); break; case 'Owner': navigate('/ownerprofile'); break; case 'Admin': navigate('/adminprofile'); break; default: navigate('/'); // Fallback in case role is unrecognized } } catch (error) { if (error.response) { // Handle specific errors based on the response from the backend if (error.response.status === 401) { setError('Incorrect email or password'); } else { setError('Login failed. Please try again.'); } } else { setError('Login failed. Please try again.'); } } };
return (
[img]/images/1.png[/img] Don't have an account? SIGN UP [img]/images/1.1.png[/img]
{/* Update CloseIcon to use handleClose on click */}
Don't have an account? SIGN UP
Sign in Here
setEmail(e.target.value)} // Update email state />
setPassword(e.target.value)} // Update password state />
Forget Your Password?
SIGN IN
{error && {error} } OR
{/* Use GoogleLogin from @react-oauth/google */} (
); } [/code] [code]import React,{useState} from 'react'; import NavigationBar from '../../components/NavigationBar'; import Footer from '../../components/Footer'; import UserContent from '../../components/UserProfile/UserContent'; import {Avatar,Typography} from '@mui/material'; import ChatBubbleOutlineIcon from '@mui/icons-material/ChatBubbleOutline'; import StarOutlineIcon from '@mui/icons-material/StarOutline'; import PersonOutlineIcon from '@mui/icons-material/PersonOutline'; import MenuIcon from '@mui/icons-material/Menu'; import './userProfile.css';
// Function to fetch all boarding places export const fetchBoardingPlaces = async () => { try { const response = await api.get('/boarding-places'); return response.data; } catch (error) { console.error('Error fetching boarding places:', error); throw new Error('Unable to fetch boarding places. Please try again later.'); } };
// Function to fetch a boarding place by ID export const fetchBoardingPlaceById = async (id) => { try { const response = await api.get(/boarding-places/${id}); return response.data; } catch (error) { console.error(Error fetching boarding place ${id}:, error); throw new Error(Unable to fetch boarding place ${id}.); } };
// Change user password export const changePassword = async (newPassword) => { const token = localStorage.getItem('token'); // Retrieve token const response = await api.put('/change-password', { password: newPassword }, { headers: { Authorization: Bearer ${token}, }, }); return response.data; // Return success message or user data if needed };
// Fetch user data export const fetchUserData = async (token, userId) => { try { const response = await api.get(/loginuser/${userId}, { headers: { Authorization: Bearer ${token}, }, }); return response.data; // Return user data } catch (error) { console.error('Error fetching user data:', error); throw error; // Propagate the error for further handling } }; [/code] [code]import React from 'react'; import UserAccount from './UserAccount'; import UserChats from './UserChats'; import UserRatings from './UserRatings';
// Basic validation for password change if (!newPassword || !confirmPassword) { setError('Both password fields are required.'); return; } if (newPassword !== confirmPassword) { setError('Passwords do not match.'); return; }
try { await changePassword(newPassword); // Call API to update the password setSuccessMessage('Password changed successfully!'); setNewPassword(''); setConfirmPassword(''); } catch (error) { setError('Error changing password. Please try again.'); } };
public class LoginUserService { @Autowired LoginUserRepo loginUserRepo; @Autowired SignInMail signInMail; @Autowired PasswordEncoder passwordEncoder;
public ReturnLoginUserDto saveLoginUser(LoginUserDto loginUserDto) { String encodedPassword = passwordEncoder.encode(loginUserDto.getPassword());
if (loginUserRepo.existsLoginUserByEmail(loginUserDto.getEmail())) { return null; }
LoginUser save = loginUserRepo.save( new LoginUser(loginUserDto.getContactNo(),encodedPassword,loginUserDto.getEmail(),loginUserDto.getRole())); signInMail.sendEmail(loginUserDto); return new ReturnLoginUserDto(save.getEmail(), save.getId()); } public List getAllLoginUser(){ List all = loginUserRepo.findAll();
@AllArgsConstructor @NoArgsConstructor @Data public class LoginUserDto { private Integer id; private Integer contactNo; private String password; private String email; public String role; } [/code] нам нужно показать данные входа пользователя в его собственный профиль, нам нужно знать, как правильно интегрироваться.
Я разрабатываю этот проект, используя Spring Boot для бэкэнда и React для внешнего интерфейса, я соединил этот интерфейс и серверную часть. Затем регистрация и вход в систему работают без каких-либо ошибок, но когда я собираюсь получить данные для...
Я разрабатываю этот проект, используя Spring Boot для бэкэнда и React для внешнего интерфейса, я соединил этот интерфейс и серверную часть. Затем регистрация и вход в систему работают без каких-либо ошибок, но когда я собираюсь получить данные для...
Я следил за тем, чтобы потреблять спокойную веб -службу
и запустил эту команду в терминале Intellij
./mvnw spring-boot:run
У меня была ошибка, поэтому я решил клонировать полный проект
Я следил за тем, чтобы потреблять спокойную веб -службу
и запустил эту команду в терминале Intellij
./mvnw spring-boot:run
У меня была ошибка, поэтому я решил клонировать полный проект
Я следил за тем, чтобы потреблять спокойную веб -службу
и запустил эту команду в терминале Intellij
./mvnw spring-boot:run
У меня была ошибка, поэтому я решил клонировать полный проект