【问题标题】:Why doesn't authentication work in production in ASP.NET Core MVC 3.1?为什么身份验证在 ASP.NET Core MVC 3.1 的生产环境中不起作用?
【发布时间】:2020-12-28 05:44:50
【问题描述】:

所以我对 ASP.NET Core 还很陌生,并且致力于将应用程序部署到生产服务器。我正在使用标准身份验证/实体框架库,并且效果很好。但是,当我使用 [Authorize] 属性保护页面时,它可以在我的开发机器上运行,但不能在生产机器上运行。我的Startup.cs 班级没有任何异常,也没有IsDevelopment 子句:

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();

【问题讨论】:

  • 您使用的是哪种生产服务器?是否有任何关于身份验证不起作用的错误消息或日志信息?并且,您能否在 ConfigureServices 方法中发布相关代码,或者您可以发布重现问题的详细步骤,这样我们可能更容易重现问题并找到问题。另外,我找到了similar thread,看来问题可能与服务器配置有关。
  • 我使用的是 Windows Server 2019,所以不像其他线程那样使用 Apache。明天我会在我的开发箱中发布代码。身份验证工作正常。在我登录之前,我无法进入我的默认页面。这是控制器方法在使用 [Authorize] 属性装饰时不受保护。我可以在未登录时访问受保护的页面。
  • 如果您不介意从 startup.cs 分享您的 ConfigureServices 方法,请将其添加到问题中。

标签: .net-core asp.net-core-mvc asp.net-core-3.1 asp.net-authorization


【解决方案1】:

如果所有方法都需要授权,请尝试将 [Authorize] 放在控制器类上方:

[Authorize]
public class HomeController : Controller

这将要求用户通过身份验证才能在控制器中运行任何操作。我不确定为什么它不会在操作级别工作,除非在控制器级别有其他东西覆盖它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    相关资源
    最近更新 更多