В моем манифесте расширения у меня есть:
"permissions": [
"cookies",
"https://localhost:5001/"
]
В моем методе Startup.cs ConfigureServices у меня есть:
services.AddCors(options =>
{
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("https://localhost:5001/",
"chrome-extension://mdgfojbohoeindggojmfcphhobepgcbk/");
});
});
И в методе Startup.cs Configure у меня есть:
app.UseCors(MyAllowSpecificOrigins);
То, что я пробовал до сих пор:
- После вызова кнопки
window.open('Url_of_signin_page')
и перенаправления обратно на исходную страницу после входа пользователя. Это устанавливает аутентификациюcookie, и когда я перехожу к конечной точке, которая требует аутентификации вручную, она работает.Однако вызовы XMLHttpRequest
не отправляют cookie. - Использование AJAX для извлечения HTML-кода формы входа и добавления его в качестве div к текущей странице, на которой запущено расширение.Проблема здесь заключается в том, что помощник по тегу формы MVC исключает хост из атрибута действия формы, и поскольку страница, на которой он находится, больше не находится в том же домене, что и приложение, оно не работает.Если я указываю действие формы вместо использования помощника по тегам, тогда проверка токенов защиты от подделки завершается неудачей, хотя я явно добавил
@Html.AntiForgeryToken()
в форму входа.
В конечном итоге я хочу, чтобы пользовательбыть в состоянии войти в приложение MVC Core и иметь расширение, чтобы иметь возможность делать аутентифицированные запросы к этому приложению MVC Core.Возможно ли это, и если да, то как?
Изменить, чтобы добавить: я устанавливаю withCredentials = true для XmlHttpRequest.