Моя цель - создать страницу входа в React JS, на которой запущена служба отдыха json.В Postman, когда я ввожу URL-адрес для службы, задайте его для запуска в качестве POST и введите следующий текст JSON в тело: {username: "myUserName", password: "myPassword"} ... возвращается токен.Поэтому в моем предложении fetch я использую JSON.stringify для передачи имени пользователя и пароля на сервер.
Я новичок в использовании Fetch с реагировать, поэтому мой вопрос в том, как начать работу саутентифицировать различных пользователей, просто используя реагировать JS только с fetch?Я предполагаю, что я должен написать свою логику в течение секунды после моего предложения Fetch?
В настоящее время моя страница принимает любые учетные данные и направляет пользователя на целевую страницу после нажатия кнопки отправки.У меня есть функция, содержащая fetch, и теперь я вызываю функцию fetch после нажатия кнопки onSubmit, которая теперь захватывает токен.
Это мой код:
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import './Login.css';
import { withRouter } from 'react-router-dom';
class Login extends Component {
constructor() {
super();
this.state = {
data: [],
username: "",
password: "",
token: "",
};
} //end constructor
componentWillMount() {
}
componentDidMount() {
this.fetchData();
}
fetchData() {
fetch('http://theapi/api/auth', {
method: 'POST',
headers: {
'Content-type': 'application/json',
},
body: JSON.stringify({
username: 'myUserName',
password: 'myPassword',
Authorization: 'TheReturnedToken',
})
}) /*end fetch */
.then(results => results.json())
.then(data => this.setState({ data: data })
)
}
//request the token
requestAccessToken(data) {
const loginInfo = '${data}&grant_type=password';
return fetch('${API_URL}Token', {
method: 'POST',
headers: new Headers({
'Content-Type': 'application/json',
}),
body: loginInfo,
})
.then((response) => response.json());
}
//authenticate request
requestUserInfo(token) {
return fetch('${API_URL}api/participant/userinfo', {
method: 'GET',
headers: new Headers({
Authorization: 'Bearer ${token}',
}),
})
.then((response) => response.json());
}
change = (e) => {
this.setState({
[e.target.name]: e.target.value
});
}; //end change
onSubmit = (e) =>{
this.fetchData();
e.preventDefault();
//console.log(this.state);
this.setState({
username: "",
password: "",
});
this.props.history.push('/landing');
};
render() {
console.log(this.state.data);
return (
<div>
<div className="loginContainer">
<h2>Member Login</h2>
<form>
<input
id="username"
name="username"
placeholder="User Name"
value={this.state.username}
onChange={e => this.change(e) }
className="form-control"
/> <br />
<input
id="password"
name="password"
type="password"
placeholder="Password"
value={this.state.password}
onChange={e => this.change(e) }
className="form-control"
/> <br />
<button onClick={e => this.onSubmit(e)} className="btn btn-primary">Submit</button>
</form>
</div>
</div>
);
}
}
export default withRouter(Login);
Как мне начать получать форму для аутентификации различных пользователей?По сути, я пытаюсь, чтобы моя страница принимала имя пользователя и пароль и, если они совпадают, а затем направляла пользователя на целевую страницу.