0
認証が必要なページをユーザーが見たいとしましょう。ログインに成功した後は、最初に見たいページにリダイレクトされるようにします。ログインページから目的のページに移動
これは、ログインコンポーネントです:
import React, { Component } from 'react';
import { Field, reduxForm } from 'redux-form';
import { connect } from 'react-redux';
import { loginUser } from '../actions';
import validator from 'validator';
class LoginForm extends Component {
renderField(field) {
const {meta: {touched, error}} = field;
const className = `form-group ${touched && error ? 'has-danger':''}`;
return (
<div className={className}>
<label>{field.label}</label>
<input className="form-control"
type="text"
{...field.input}
/>
<div className="text-help">
{touched ? error:''}
</div>
</div>
);
}
onSubmit(values) {
const { history } = this.props;
this.props.loginUser(values, ({status, headers}) => {
if (status === 200) {
const { authorization } = headers;
localStorage.setItem('jwt_token', authorization);
history.push("/"); //HERE ????
}
});
}
render() {
if (localStorage.getItem('jwt_token')) {
this.props.history.push("/");
}
const {handleSubmit} = this.props;
return (
<form onSubmit={handleSubmit(this.onSubmit.bind(this))}>
<Field
name="username"
label="Username"
component={this.renderField}
/>
<Field
name="password"
label="Password"
component={this.renderField}
/>
<button type="submit" className="btn btn-primary">Enter</button>
</form>
);
}
}
function validate(values) {
//.....
}
export default reduxForm({
validate,
form:'LoginForm'
})(
connect(null, { loginUser })(LoginForm)
);
私はhistory.goBack()
を試みたが、どうやらそれは、ユーザーがログインページに入る前にアクセスしたかったパスにリダイレクトされません。私は何をすべきか ?
私はすでに歴史のオブジェクトへのアクセス権を持っています。私は、ユーザーがログインフォームにアクセスしたURLに戻る方法を探しています。 –