在React中保护路由与对其进行身份验证

时间:2019-07-18 02:35:29

标签: javascript node.js reactjs

这更多是关于建筑/设计的问题,想知道我是否做错了。

我的React应用程序有几条路线,我保护其中一些路线免受未经授权的用户的侵害。

// app.js
...
<Router>
  <Switch>
    <Route exact path="/login" component={Login} />
    <ProtectedRoute exact path="/" component={Home} />
    <ProtectedRoute exact path="/about" component={About} />
  </Switch>
</Router>
...

Login组件具有一个form,该usernamepassword发送到Express后端,而Express后端依次回复200403是否有比赛。根据收到的响应,我将React状态下的isAuthed变量设置为truefalse

ProtectedRoute只是另一个标准HOC,它检查isAuthed变量是否设置为true并相应地呈现。


我对此设计有一些疑问,

问题1。如果我收到200作为响应,我也会在isAuthed中将true设置为localStorage,这样用户就不会得到注销页面刷新。这是某种原始的jwt实现吗?我的Express后端应该发送令牌而不是普通的200403吗?如果是这样,那么有效载荷中到底应该是什么?

第二季度。我的其他页面-HomeAbout是静态的,不对Express进行任何调用。一旦用户通过身份验证,我就会看到人们将每个请求标头中的jwt发送给Express。在我的情况下,对于HomeAbout页面,我什至不需要后端,那么如何在标题中发送jwt?在这里没有道理。

第三季度。我应该使用passport-jwt或类似的库来处理我的login路由还是继续使用我的 primitive 方法?

第四季度。我的前端和后端是两个单独的存储库。我知道,如果它们相同,那么Express应用程序将像使用ejshandlebars来基于路由呈现HTML内容时一样 render 东西。 Express不处理任何前端渲染时该怎么办?

抱歉,如果这些问题太愚蠢了。谢谢!

0 个答案:

没有答案