如何在ABP中重定向到登录页面?

时间:2018-03-22 02:08:30

标签: authentication redirect .net-core asp.net-core-mvc asp.net-boilerplate

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

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

1 个答案:

答案 0 :(得分:1)

*.Web.Host项目没有登录页面,redirect to Swagger就是。

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

enter image description here

如果您只想登录,请考虑使用浏览器控制台中的Swagger authentication helpers

abp.swagger.login();

要回答您的问题,您可以通过还原提交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 =>

<强> Startup.cs

app.UseAuthentication();

app.UseJwtTokenMiddleware(); // Add this back

app.UseAbpRequestLocalization();

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

这与ABP 401 response from API instead of redirect中的预期行为相反。

另外,您可以configure login path for redirect

  

您可以在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