使用Node.js进行客户端路由

时间:2019-01-14 10:17:03

标签: javascript node.js reactjs

我使用模板引擎(ejs)学习了nodejs。

现在,我正在使用带有react的客户端渲染,因此我想知道当用户登录客户端时你们如何渲染/重定向。

考虑这三个路线。 (在我的服务器中)

注意:认为服务器正在localhost:8000中运行

router.get("/",  (req, res) => {
    if (req.user)  res.redirect("/home") 
    else res.redirect("/login")
})

//Home Screen
router.get("/home", MiddlewareAuth.UserLoggedIn, (req, res) => {
   res.json(req.user)
})


//Login
router.get("/login", MiddlewareAuth.UserNotLoggedIn, (req, res) => {
    res.json('Login Screen')
})

根据用户是否登录而进行重定向。

现在,在我的反应(客户端,在路径localhost:3000上运行)中,我的/是一个组件,该组件确定是否应将用户重定向到首页"localhost:3000/home“或登录{ {1}}

作为开发人员的人们通常也会这样做。

"localhost:3000/login"

还是有更好的选择?

更新:这是我的中间件

async componentWillMount () {
axios.get("http://localhost:8000/").then(response => {
if (response.data === "login screen") //Redirect to localhost:3000/login
else //redirect to home screen) 
}) 

1 个答案:

答案 0 :(得分:0)

好吧,因为您没有使用任何令牌机制或会话。您当前使用用户对象执行此操作的方式正确吗?您检查是否存在用户对象,然后登录用户。否则,将其重定向到登录屏幕。 由于这是Web应用程序安全的明智之举,因此此实现非常容易被破解。 如果某人(黑客)固定了用户对象并发送该对象怎么办?他将登录对吗? 因此,我的建议是您应将

与JSON网络令牌(这是当今使用最广泛的东西)一起使用

passport.js

jsonwebtoken-npm

还有其他可用的实现,因为这是第一次检查,您将不得不自己进行一些挖掘。因为这就是我们开发人员的工作方式。阅读文档并尝试一下,还有大量的YouTube视频 尝试this Brad Travery,他解释得很简单,尽管它很复杂。这是一个完整的项目