Я очень новичок в этой технологии, поскольку я работаю с угловым и MVC-фоном. Мне нужно сделать что-то вроде: несколько страниц моего сайта доступны только после входа в систему.
Так что это означает, что я должен проверять аутентификацию при перенаправлении каждой страницы. Если до входа в систему пользователь пытается перенаправить на эти страницы, то он должен быть перенаправлен на страницу входа.
Я много искал в Google и сталкивался с множеством разных способов. Но я запутался, что лучше с точки зрения безопасности, так как мой сеанс будет сложным объектом?
Я попробовал одну вещь, я зарегистрировал UseSession в файле запуска и добавил значение в сеанс после входа в систему.
Я создал один компонент для вызова API и проверки значения сеанса, а если нет, то этот компонент отображает страницу входа.
export class App extends React.Component<{}, {}> {
constructor(props) {
super(props);
}
public render() {
return (
<div >
<Route exact path="/login" component={Login} />
<Route component={PrivateRoute}>
<Route path="/" component={Home}/>
<Route path="/dashboard" component={Dashboard}/>
</Route>
</div>
);
}
}
export class PrivateRoute extends React.Component<RouteComponentProps<{}>, {}> {
constructor(props) {
super(props);
this.check = this.check.bind(this);
}
private check(): boolean {
if (this.props.location.pathname != '/login') {
fetch('api/Home/GetToken', {
method: 'GET'
}).then((response) => response.json())
.then((responseJson) => {
console.log(responseJson);
if (responseJson.statusCode != 200) {
this.props.history.replace("/login");
return false;
}
else {
return true;
}
}).catch((response) => { this.props.history.replace("/login"); return false; });
return true;
}
else {
this.props.history.replace("/login");
return false;
}
}
public render() {
if (this.props.location.pathname != '/login' && this.check())
return this.props.children;
else {
this.props.history.replace("/login");
return null;
}
}
}
Но это не работает. Кто-нибудь может мне помочь ??