-1
  1. 我从 ASP.NET Boilerplate 网站下载 .NET Core 示例,
  2. 更改数据库连接字符串,更新数据库,
  3. 运行 Web Api,成功展示 Swagger,
  4. 添加主页/索引视图,更改主页/索引操作以返回视图,而不是 Swagger,
  5. 再次运行,显示主页成功,
  6. 然后添加一个 Home.Account Controller 和 Home.Account View,登录页面。
  7. 在主页/索引上添加AbpMvcAuthentication属性,我想要的是当访问主页时,重定向到登录页面。

当我转到主页时,它显示一个空页面,不是主页,也不是登录页面。似乎身份验证失败,但没有重定向到登录页面。

我的问题是:当身份验证失败时,如何让AbpMvcAuthentication知道重定向哪个页面?

4

1 回答 1

1

*.Web.Host项目没有登录页面,重定向到 Swagger的位置。

您应该将您的启动项目更改为*.Web.Mvc

在此处输入图像描述

如果您只想登录,请考虑使用浏览器控制台中的Swagger 身份验证助手

abp.swagger.login();

要回答您的问题,您可以通过恢复 commit 重新启用身份验证重定向92b6270

// What it was (and what you want)
services.AddAuthentication()
    .AddJwtBearer(options =>

// What it is
services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = "JwtBearer";
    options.DefaultChallengeScheme = "JwtBearer";
}).AddJwtBearer("JwtBearer", options =>

启动.cs

app.UseAuthentication();

app.UseJwtTokenMiddleware(); // Add this back

app.UseAbpRequestLocalization();

需要明确的是,这会重定向到一个空白页面,因为*.Web.Host项目没有登录页面

这与来自 API 而不是 redirect的 ABP 401 响应中的预期行为相反。

此外,您可以为重定向配置登录路径

您可以在Startup.cs中进行配置:

IdentityRegistrar.Register(services);
AuthConfigurer.Configure(services, _appConfiguration);

// Add this line:
services.ConfigureApplicationCookie(options => options.LoginPath = "/Admin/Login");

相关文档:https ://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x

于 2018-03-23T03:33:06.250 回答