ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript-如何跳过或跳中间件? (节点)

2019-10-27 10:35:45  阅读:398  来源: 互联网

标签:koa node-js middleware javascript koa-router


给定两个中间件,如何添加首先会受到攻击的东西,然后确定将请求传递给哪个中间件.该请求只能被丢弃或转发到中间件之一,而不能两者都删除.

app.use( function *(next) {
    if (isAuthenticated)
        *private middleware*
    else
        *use public middleware*
});

进一步来说:
我有一个主页/应该根据用户是否登录(在此使用基于令牌的身份验证)而具有可变的响应.为简单起见,如果请求用户没有令牌,则public.html是响应,而private.html是带有有效令牌的请求.
现在,只需在一个功能中实现就足够容易了,但是我想将路由器分开,以使代码更易于管理.
因此,我需要以某种方式能够选择请求正确的中间件路由器?不知道该怎么做.

var publicR = new router();
publicR.get('/', function *(next) {
    ....public.html....
});
var privateR = new router();
privateR.get('/', function *(next) {
    ....private.html....
});

app.use(function(){
   if(isAuthenticated)
      ...use privateR.routes();
   else
      ...use publicR.routes();
});

解决方法:

首先,在登录或未登录时为给定的URL呈现完全不同的内容是不寻常的,也不是一个好主意.因此,尝试让两个不同的路由器都提供相同的路由,但一个用于登录用户和另一个未登录用户可能不是一个好的设计思想.

更常见的情况是,页面的一部分在登录时可能会有所不同.在那种情况下,您只有一条路线可以创建页面,该页面处理的内容与登录时或登录时的内容略有不同.

如果您确实希望在登录时拥有完全不同的内容和行为,那么您可能应该在登录时重定向到其他URL.在这种情况下,您可以将完全不同的路由器用于“登录” URL.由于给定的URL将报告一致的内容,并且根据用户的状态不会有所不同,因此这对于搜索引擎也将更好地工作.这也使Express中路由器的使用非常容易.您的“已登录”路由器会提供已登录的URL.您可以使用中间件来检查登录的URL,以查看您是否实际登录,如果没有,则将其重定向回未登录的页面,反之亦然.

标签:koa,node-js,middleware,javascript,koa-router
来源: https://codeday.me/bug/20191027/1943766.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有