Azure广告身份验证不适用于带有Angular 5.2新模板的新asp.net core 2.1。由于我们没有在新模板中路由到家庭控制器

时间:2019-01-02 07:30:22

标签: c# jquery angular visual-studio-2017 asp.net-core-2.1

我们已将角度为4.3的.net核心2.1迁移到角度为5.2的.net核心2.1。

由于MapRoute定义发生了变化,现在我们无法从startup.cs进行Azure广告身份验证。为了参考,

上一个:

app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });

最新:

app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller}/{action=Index}/{id?}");
            });

以前,我们曾经在身份验证后导航到家庭控制器和index.cshtml。但是现在新模板中没有.cshtml。

2 个答案:

答案 0 :(得分:0)

这可能是由于回复URL。

执行身份验证后,用户将被重定向到回复URL。 此URL在AAD中配置。

您可能已在回复URL中配置了应用程序的根URL,该URL不包含任何控制器或操作。这就是为什么应用程序无法将请求路由到任何地方的原因。

您可以在Azure门户中对此进行验证。

编辑: 根据您的评论,我建议您检查是否使用过“ UseDefaultFiles”。

UseDefaultFiles尝试查找名称为“ Default”或“ Index”的页面。但是,如果没有这些名称的页面,则需要编写自定义逻辑。

假设您要将“ mydefault.html”作为默认文档,则逻辑将如下所示。

引用this documentation

public void Configure(IApplicationBuilder app)
{
    // Serve my app-specific default file, if present.
    DefaultFilesOptions options = new DefaultFilesOptions();
    options.DefaultFileNames.Clear();
    options.DefaultFileNames.Add("mydefault.html");
    app.UseDefaultFiles(options);
    app.UseStaticFiles();
}

答案 1 :(得分:0)

我遇到了将我的应用程序从angular 5 / .Net Core 2.0迁移到angular 7 / .Net Core 2.2时完全相同的问题,我找到了一种保留身份验证服务器端的方法。 解决该问题的方法是添加一个中间件,该中间件检查每个请求是否已通过身份验证,如果不是,则强制执行。

pandas.DataFrame