如果用户未经过validation,则显示公共逻辑React JS和Node API
如果用户没有login,我怎样才能显示公共(即:家庭,关于,身份validation的东西)?
我知道SPA并不意味着刷新,但我希望它改变页面上的大部分脚本。
环境:在单独的项目中使用ReactJS,WebPack和现有的NodeJS API。
我浏览了Webpack文档,了解它只会加载所需的脚本和组件,但所有脚本都可以通过“查看页面源代码”来查看。 如果我理解错了,请纠正我。
理想情况下,您可以跟踪用户是否login,或者通过在应用程序状态树的某处存储会话令牌来进行login。 您可以使用Redux之类的软件来pipe理应用程序中的状态。 如果用户未login并请求需要validation的路由,则首先需要确定需要redirect到哪条路由。 让我们假设你有2个路线/login和/产品 。 您希望确保只有经过身份validation的用户才能查看/ products部分。 你完成这个的方式是通过检查你的状态的sessiontoken值来redirect到/ login,你可以把它作为道具传递给映射到/ productspath的Products组件。
使用类似react-router的东西
在产品组件中使用下面的东西
class Products extends Component{ componentWillUpdate(nextProps, nextState, nextContext) { let {sessiontoken}=nextProps; if (!sessiontoken) nextContext.router.push('/login'); } } Products.contextTypes = { router: React.PropTypes.object.isRequired }
在上面的代码中,我们正在读取从更高阶的Container组件传递的作为道具的sessiontoken的值。 如果没有sessiontoken它将redirect到/login。 只要你的API返回一个HTTP 401遇到一个无效的sessiontoken这将完全适合你,你不需要担心人们能够查看页面源。
- Express.js Passport身份validation会自动跳过策略
- Azure移动服务javascript后端如何设置和读取cookie?
- Rackspace授权Node.js
- 检测提供商注销passport.js?
- 使用本地策略进行身份validation时,Passportjs引发500服务器错误
- iOS&node.js:如何validation传入的访问令牌?
- Passport是否支持新的Google+loginfunction?
- 是否可以在Express上的白名单路由中应用基本身份validation/中间件?
- 如何从运行在appengine中的NodeJS应用程序访问Google CloudML REST API