我继承了一个同时使用 Web API 和 MVC 前端的 ASPnetzero 应用程序。API 通过 Bearer 进行身份验证,前端通过 AbpIdentity (Cookies) 进行身份验证。几天前,我勇敢地决定更新我的 nuGet 软件包。该更新伴随着从 .netCore v1 到 v2 的升级。但在 JwtBearer 中间件过时后,我在身份验证方面遇到了一些困难。我可以使用 cookie 进行身份验证,但不能使用不记名令牌。
我几乎尝试了一切。使用多种身份验证方法意味着一次只能使用一种方法。
在 Startup.cs 中,我有以下内容(片段):
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddAbpIdentity<Tenant, User, Role>()
.AddUserManager<UserManager>()
.AddRoleManager<RoleManager>()
.AddSignInManager<SignInManager>()
.AddClaimsPrincipalFactory<UserClaimsPrincipalFactory>()
.AddDefaultTokenProviders();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
AuthConfigurer.Configure(app, _appConfiguration);
}
然而,这是一个自我回答的问题,我希望我能帮助任何有类似或相同情况的人,因为我已经整理了自己的解决方案。这个想法是让应用程序使用 Bearer 令牌(仅当使用 API 时)和 cookie(仅当使用 MVC 时)。
我还面临一个挑战,因为 MVC 对 API 进行 XHR 调用以获取要在前端显示的数据。这意味着 API 还需要与 Cookie 配合使用(但仅适用于 MVC 用户)。
红糖糍粑
相关分类