У меня есть веб-сервис с ASP.Net Web Api 2 и клиент Angular 6.
Теперь на моем сервере в моем контроллере я добавляю файл cookie авторизации с:
[RoutePrefix("api/auth")]
public class AuthController : ApiController
{
[HttpPost]
public HttpResponseMessage LogInUser(LoginData loginData)
{
// .. check password ...
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // ticket version
loginData.UserName, // authenticated username
DateTime.Now, // issueDate
DateTime.Now.AddMinutes(60), // expiryDate
true, // true to persist across browser sessions
String.Empty, // can be used to store additional user data !!! Cannot be null!!!
FormsAuthentication.FormsCookiePath); // the path for the cookie
// Encrypt the ticket using the machine key
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
CookieHeaderValue cookie = new CookieHeaderValue(FormsAuthentication.FormsCookieName, encryptedTicket);
HttpResponseMessage respMessage = new HttpResponseMessage();
respMessage.Headers.AddCookies(new CookieHeaderValue[] { cookie});
return respMessage;
}
}
На сервере включены cors, а на стороне клиента я всегда устанавливаю 'withCredentials':
@Injectable()
export class IcaHttpInterceptor implements HttpInterceptor {
constructor() {
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
request = request.clone({
withCredentials: true
});
console.log("outgoing request", request);
return next.handle(request);
}
}
, поэтому, если я делаю сообщение с HttpClient в 'localhost / api / auth', я получаю cookie в заголовке ответа, следующее сообщение в другой метод в 'api / auth' cookie также отправляется, но теперь, когда Я отправляю запрос на другой путь, например 'api / users' cookie не отправляется ..
Вопрос почему?