Аутентификация форм + ASP.NET MVC абсолютный ReturnURL

Вы можете добавить файл JavaScript в ваше приложение Angular, добавив свойство scripts к своему проекту приложения в файле рабочей области приложения Angular (aka angular.json в корневом каталоге вашего проекта):

{
  "version": 1,
  // ...
  "projects": {
    "my-app": {
      // ...
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            // ...
            "scripts": [
              // JavaScript file goes here
              "js/le.min.js",
              // Note: The `scripts` property accepts an array of objects or an array of strings
              // See https://github.com/angular/angular-cli/blob/c5de8e3b0e5c1499a0a17da0208297cd82b36095/packages/angular_devkit/build_angular/src/browser/schema.json#L390-L419 for more info
            ]
            // ...
          }
          // ...
        }
        // ...
      }
    }
    // ...
}

[117 ] Кроме того, вы можете установить это с помощью команды ng config :

# Replace my-app with your actual project name in your angular.json file
ng config projects.my-app.architect.build.options.scripts[0] js/le.min.js

11
задан bxlewi1 18 December 2008 в 22:14
поделиться

2 ответа

Принятие аутентификации форм, в сервере B приложения web.config, установило атрибут loginUrl на теге форм к Методу действия Контроллера, который лавирует на абсолютном URL прежде, чем перенаправить к серверу A.

Конфигурация на сервере B

<authentication mode="Forms">
  <forms loginUrl="/Account/LoginRedirect" />
</authentication>

Метод действия был бы похож

 public RedirectResult LoginRedirect(string returnUrl)
    {
       var requestUrl = HttpContext.Current.Request.Url;
       return LoginUrlOnServerA + 
              "?returnUrl=" +          
              HttpUtility.UrlEncode(string.Format("http://{0}:{1}{2}",
                requestUrl.Host,
                requestUrl.Port,
                HttpUtility.UrlDecode(returnUrl)));
     }
5
ответ дан 3 December 2019 в 05:36
поделиться

Путем стандартный AuthorizeAttribute работает, путем установки кода состояния ответа на 401, если запрос не аутентифицируется. Это ударяет стандартный ответ модуля аутентификации по умолчанию на несанкционированный запрос. Я предполагаю, что Вы используете аутентификацию на основе форм, которая создала бы URL возврата на основе URL в запросе. В этом случае, вероятно, относительный URL.

Одна вещь, которую Вы могли сделать, вместо того, чтобы полагаться на встроенное поведение, Вы могли реализовать SSOAuthorizeAttribute, который расширяет класс AuthorizeAttribute и переопределяет OnAuthorization. Вы могли затем извлечь loginUrl из элемента форм в веб-конфигурации и создать Ваш собственный RedirectResult и вытянуть returnUrl от HttpContext. Запрос. URL. Свойство AbsoluteUri в параметре AuthorizationContext.

 public class SSOAuthorizeAttribute : AuthorizeAttribute
 {
      public override void OnAuthorization( 
                          AuthorizationContext filterContext )
      {
          if (filterContext == null)
          {
              throw new ArgumentNullException( "filterContext" );
          }

          if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
          {
              // get from cached variable from web configuration
              string loginUrl = ... 
              if (filterContext.HttpContext.Request != null)
              {
                  loginUrl += "?ReturnUrl=" + filterContext.HttpContext
                                                           .Request
                                                           .Url
                                                           .AbsoluteUri;
              }

              filterContext.Result = new RedirectResult( loginUrl );
          }
      }
 }
16
ответ дан 3 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: