Обработка сессий в веб-API - PullRequest
       0

Обработка сессий в веб-API

0 голосов
/ 11 сентября 2018

У меня есть требование, чтобы наш веб-сайт мог генерировать идентификационный номер для отслеживания, чтобы пользователи могли отслеживать, как они заходят на наш веб-сайт.

Веб-сайт представляет собой угловой интерфейс и сервер .Net Web Api2, и ониявляются частью одного и того же домена

Мой первоначальный план состоит в том, чтобы исходный URL-адрес отслеживания направлялся непосредственно к API (например, http://api.mywebsite.com/t/45mg9), а затем это возвращает перенаправление на соответствующую страницу (например, * 1007).*http://web.mywebsite.com).

Перенаправление работает нормально, но я хочу отслеживать начальный код отслеживания, так как пользователь может не войти в систему, поэтому необходимо удерживать его, пока он не вошел в систему.

Я пробовал:

Cookies :

В сообщении о перенаправлении я установил cookie, используя следующее:

var response = new HttpResponseMessage(System.Net.HttpStatusCode.Redirect);
        response.Headers.Location = new Uri(tracking.Url);

        var cookie = new CookieHeaderValue("tracking", JsonConvert.SerializeObject(tracking))
        {
            HttpOnly = true,
            Path = "/",
            Domain = "mywebsite.com",
            Expires = DateTimeOffset.UtcNow.AddDays(30)
        };
response.Headers.AddCookies(new[] { cookie });
return ResponseMessage(response);

И может видеть, что cookie устанавливается на перенаправление, но его там нет, когда веб-приложение выполняет последующие вызовы API.

Session

Iвключил сеансы в моем веб-API и установить значение, но этото есть потерять его с помощью перенаправлений.


Я хочу попытаться сохранить это в API, поскольку я не думаю, что веб-приложение должно знать о хранимой информации, интересует только API.

Как я могу сохранить постоянную информацию (cookie, сеанс и т. Д.), Отправляемую в API?Нужно ли указывать веб-приложению передавать файлы cookie в вызов API?

1 Ответ

0 голосов
/ 11 сентября 2018

Вы можете переиздать идентификатор отслеживания из webapp в api в каждом запросе, добавив заголовок запроса с идентификатором отслеживания.

В веб-приложении идентификатор отслеживания можно сохранить в файле cookie или локальном хранилище.

Для добавления идентификатора отслеживания в заголовок используйте httpinterceptor для каждого вызова API.

@Injectable()
 export class MyInterceptor implements HttpInterceptor {
constructor() { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    request = request.clone({
        setHeaders: {
            TrackingId: localStorage.getItem('trackingId')
        }
    });
    return next.handle(request);
   }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...