首页 新闻 会员 周边

请教一个关于AspNetCore中间件使用的问题

0
悬赏园豆:20 [待解决问题]

我自定义了一个验证是否登录的中间件TokenValidateMiddleware,
希望用它来确保以/api开头的webApi只有登录后才能访问,
(不限制的API我会以 unAuthApi/开头)

我在StartUp的Configurtion里配置
app.Map("/api", builder =>
{
builder.UseMiddleware<TokenValidateMiddleware>();

        });

运行起来发现map后的中间件执行完后,不会执行之后的中间件(app.UserMvc()),
这样的话,即使验证通过了,没有后边的中间件,只返回404,

于是我在builder.UseMiddleware<TokenValidateMiddleware>();
后加了一行
builder.UseMvc();
,变成下图这样:

可是仍然没什么效果,我确保我写的中间件是没有问题的,因为我不用app.Map而是直接用
app.UseMiddleware<TokenValidateMiddleware>()的方式,可以得到正常的结果.

但是这样的话,UnAuthApi..开头的方法也走这个验证了,
而我只想对api...开头的方法加上登录验证,

请问大牛们是怎么处理的呢?

下图是我的中间件

hexllo的主页 hexllo | 菜鸟二级 | 园豆:318
提问于:2018-10-30 13:17
< >
分享
所有回答(2)
0

可以用 .net core 授权验证 实现啊

fangq | 园豆:417 (菜鸟二级) | 2018-10-30 15:52
0

我没有用过map,但我想 你只需要在 TokenValidateMiddleware 中判断下 URL就可以了,也不需要map。

放逐人 | 园豆:694 (小虾三级) | 2018-10-30 18:02

然后,404 是因为
.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
}

你的mvc 没有放路由

支持(0) 反对(0) 放逐人 | 园豆:694 (小虾三级) | 2018-10-30 18:05

@找点什么: 在中间件里判断的话,所有路径都会走该中间件,其实就失去了map的意义啦,

我试了下显示的配置了路由,也是404

支持(0) 反对(0) hexllo | 园豆:318 (菜鸟二级) | 2018-10-31 08:16

@hexllo: 路由没有配对,
template: "{controller=Home}/{action=Index}/{id?}"); 这样写不对,

支持(0) 反对(0) 放逐人 | 园豆:694 (小虾三级) | 2018-10-31 17:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册