dotnetcore / osharp

OSharp是一个基于.Net6.0的快速开发框架,框架对 AspNetCore 的配置、依赖注入、日志、缓存、实体框架、Mvc(WebApi)、身份认证、功能权限、数据权限等模块进行更高一级的自动化封装,并规范了一套业务实现的代码结构与操作流程,使 .Net 框架更易于应用到实际项目开发中。
Apache License 2.0
2.77k stars 748 forks source link

关于3.0.2升级5.0.4后,单站点项目无法访问API的问题 #234

Closed AlexGeller closed 2 years ago

AlexGeller commented 3 years ago

描述一下BUG

3.0.2框架使用AuthorizeAttribute对SiteApiControllerBase进行授权验证,该特性支持以cookie和token授权验证,但是升级到5.0.4后,使用ApiAuthorizeAttribute对SiteApiControllerBase进行授权验证,该特性只支持使用bearer token进行授权验证,导致单站点网站使用/api/identity/login接口登录后,使用cookie进行登录失败,所有继承自SiteApiControllerBase类实现的API都无法访问,出现401 Unauthorized。

重现步骤

使用osharp-layui项目升级到5.0.4框架后,可以重现该问题。

附加上下文,如截图

image image

gmf520 commented 3 years ago

授权Attribute有两个类:

AlexGeller commented 3 years ago

明白,5.0.4的版本使用ApiAuthorizeAttribute对SiteApiControllerBase进行授权验证,将直接导致OSharp.Hosting.Apis项目无法用于站点授权,该项目下所有的Controller所生成的API都无法在站点中使用。

只能下载OSharp.Hosting.Apis项目,将SiteApiControllerBase里的ApiAuthorizeAttribute授权换成SiteAuthorizeAttribute,然后重新编译才能使用。