ASP.NET Core见识录ABPdotNET

ABP Controller 中无法获取AbpSession.U

2017-07-20  本文已影响111人  熊猫伸伸腿

环境 .NET CORE 1.1  Angular, ABP官方的免费模板创建的工程

开发过程中遇到需要提供文件下载的支持,看了一些其他的支持方式是通过在ApplicationService中生成一个临时文件和临时访问标识后通过无身份验证的方式提供文件下载;这种方式的好处是能够支持使用下载工具,但我这管理端程序要下载的文件涉及到安全性问题,必须保证有会话验证才行,因此这个方案被放弃。后台涉及的一些图片资源浏览也要求有身份验证,因此决定采用统一都做身份验证的方式处理。

在XXX.Web.Core和XXX.Web.Host的Controller中增加身份验证后发现AbpSession并没有获取到身份信息,均是NullAbpSession的默认值。

问题原因:
检查请求传递的参数后确定ABP的ApplicationService映射的webapi是通过传递Authorization请求头获取身份信息,普通页面是传递cookie名为Abp.AuthToken的方式,而后端并没有从cookie中获取身份信息的代码支持。

解决方法:
知道了问题原因那么只需要添加从cookie获取身份信息的支持就好了,从获取获取身份信息的支持与ABP本身无关,直接找份ASP.NET Core Authentication 的文档看就好了
在XXX.Web.Host的AuthConfigurer.cs中调用app.UseCookieAuthentication方法传递相关参数即可。关于身份信息的配置参见https://stormpath.com/blog/token-authentication-asp-net-core

abp提供的免费模板和收费模板都没有调用这个,因此估计会有不少人会遇到这个问题。

上一篇下一篇

猜你喜欢

热点阅读