我有一个快速后端,登录时会返回访问令牌作为响应,并刷新令牌作为cookie
for (int i = 0; i < colunas; ++i)
{
cout << endl << "Coluna " << i + 1 << endl;
vector<Fraction> temp;
for (int j = 0; j < linhas; ++j)
{
int x;
cin >> x;
temp.push_back(Fraction(x,1));
}
mat.push_back(temp);
cout << endl;
}
要点是,我需要在我的反应前端中有一个类似于Authservice的东西,以检查该访问令牌是否有效,它应该返回类似的内容。如果访问令牌有效,则为true;如果访问令牌无效,则为false,基于此,它将允许访问我在我的响应前端中拥有的不同路由。 (我想尽可能在交换机中实现它)
我应该如何处理?
我记得在Angular中使用auth Guard方法,但是由于我是新来的人,所以我不确定 我曾经在canActivate具有true或false值的地方做过这样的事情:
const sendAccessToken = (res , req, accesstoken) => {
res.send({
accesstoken,
email: req.body.email
})
}
const sendRefreshToken = (res, refreshtoken) => {
res.cookie("refreshtoken", refreshtoken, {
httpOnly: true,
path: '/refresh_token'
})
}
在我的反应中,SO作为伪代码应该看起来像这样:
...
import { RoleGuard } from '../guards/role-guard.service';
...
children:[
...,
{
path: 'admin',
component: AdminComponent,
canActivate: [RoleGuard],
data: {role: 'Admin'}
},
...
];
但是从那开始。我应该如何使用前端检查返回的访问令牌是否有效? (我通过刷新令牌获得它们)既然不是应该在后端发生?因为解密令牌的秘密在后端,所以我不知道如何在前端检查它。
答案 0 :(得分:1)
根据您的方法,您可以执行以下操作:
state = {
isAuthenticated: false,
}
//in render :
return (
<div>
<Router history={history}>
<Switch>
<Route exact path="/login" render={(props) => ((this.state.isAuthenticated) ? <Home {...props}/> : <Login {...props}/>)}/>
<Route exact path="/" render={(props) => ((this.state.isAuthenticated) ? <Home {...props}/> : <Login {...props}/>)}/>
</Switch>
</Router>
</div>
);