美文网首页ASP.NET Core见识录ABPdotNET
ABP Controller 中无法获取AbpSession.U

ABP Controller 中无法获取AbpSession.U

作者: 熊猫伸伸腿 | 来源:发表于2017-07-20 11:47 被阅读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提供的免费模板和收费模板都没有调用这个,因此估计会有不少人会遇到这个问题。

    相关文章

      网友评论

      • a991b6f98cfa:请问这ABP框架比一般传统的ASP.NET MVC好在什么地方?是否开发效率也更快呢?
        熊猫伸伸腿:@Alvin_784b ASP.NET MVC只是一个WEB开发的基本基架,并无业务逻辑相关的支持,只是完成了对ASP.NET到MVC结构的封装。而ABP提供了与业务逻辑相关的支持,所需的用户、权限、多语言、等等一些常用的基本业务逻辑的处理以及前后端通信方式的封装,因此开发效率更高效

      本文标题:ABP Controller 中无法获取AbpSession.U

      本文链接:https://www.haomeiwen.com/subject/anydkxtx.html