Ссылка из Excel ведет на страницу авторизации

На сайте с авторизацией есть возможность выгрузить ссылки на некоторые страницы в Excel. При попытке открыть страницу сайта из сформированной таблицы происходит перенаправление на страницу авторизации. Уже нашел, что это особенность поведения Excel, когда он по-умолчанию проверяет доступность ресурса и пытался реализовать перенаправление, если User-agent принадлежит офисному приложению и это работало. Но оказалось, что если попытаться перейти по ссылке с заблокированной страницы Excel, то User-agent не определяется. Возможно кто-нибудь нашел более эффективное решение проблемы ?

     [AllowAnonymous]
    public new IActionResult Redirect(string url)
    {
//Если User-agent определяется как  офисный, вернем Empty (аналог статуса 200)

Regex checkMsUserAgentRegex = new Regex(@"[^\w](Word|Excel|PowerPoint|ms-office)([^\w]|\z)");

        if (!User?.Identity?.IsAuthenticated ?? false)         
                if (checkMsUserAgentRegex.IsMatch(Request.Headers["User-Agent"].ToString()))

            return new EmptyResult();
 
        var redirectPath = Request.QueryString.Value.Replace("?url=", "");

        if (string.IsNullOrEmpty(redirectPath))
            return LocalRedirectPermanent("Index");
 
        return LocalRedirectPermanent("~/" + redirectPath);
    }

Да, я знаю, что в Экселе нет куков авторизации, но как я понимаю:

  1. Он пытается обратиться на сайт(без куков)
  2. Сайт отвечает ему редиректом и статусом 200 после перехода
  3. Открытие страницы, на которую сайт прислал ссылку (страницу авторизации).

Как сделать так, чтобы переход по ссылке корректно открывал нужную страницу?


Ответы (1 шт):

Автор решения: c942o

Решение как всегда простое: проверять авторизацию и редирект на странице лендинга.

 if (User.Identity.IsAuthenticated && !String.IsNullOrWhiteSpace(Request.QueryString.Value))
        return Redirect(Request.QueryString.Value);
→ Ссылка