登录/退出反应路由和expressjs路由

时间:2015-07-17 13:47:00

标签: node.js authentication express reactjs react-router

我想要做的是登录页面,注册页面。登录和注册工作正常,他们只是使用护照执行快递写的任何内容。但是,我想做的是制作一个'/ dashboard'路线。我这样做了,它只是一个仪表板组件,由其他组件组成,如导航栏和正文/内容。如何在反应路由器中编写它,使其只允许我在用户通过身份验证时访问路由/仪表板。在express中我会写一个这样的函数:

function isLoggedIn(req, res, next) {
   //if user is authenticated in the session, carry on
   if (req.isAuthenticated())
      return next(); //cuz we want to move on incase we're stuck here

   //if they arent redirect them to the home page
   res.redirect('/');
}

但是我甚至没有在快递的仪表板路线上写字。我只在react-router中做过。我的组件层次结构就像这样

<App/>
  <Dashboard/>
     <NavBar/>
         <NavMenu/>
      <Body/>
<Login/>
<Signup/>
<About/>

我的路由是这样的:

<Route>
 <Route name ="signup" path="/signup" handler={Signup} />
 <Route name ="login" path="/" handler={Login} />
 <Route name ="app" path="/dashboard" handler={App} >
  <Route name ="logout" path="/logout" handler={NavMenu} />
 </Route>
</Route>

我不明白我是否正确掌握了这个概念,但是从网页显示的内容看起来并不像它。所以基本上在localhost:3000 /登录页面,我可以在那个和注册页面之间完全切换,当登录按钮被点击它使用快速登录(它可以使用react-router来做到这一点)那么正确吗?),成功时它会转到/ dashboard(res.redirect('/ dashboard')in express)。反应路由器处理的路由似乎有单页应用感觉,而表达感觉就像我要去一个新的网页(我猜这是因为react-router只是更改网址并渲染组件我们发生了想?)。在我的NavMenu组件中,我链接了注销按钮Logout但是url更改为localhost:3000 / logout并且没有任何反应。

1 个答案:

答案 0 :(得分:0)

我在登录时将其嵌套,以便进入仪表板并且它的路由处理程序必须通过登录。

<Login>
 <App>
   <RouteHandler>
     <dashboard../>
     <data../>
     <etc../>
相关问题