У меня есть сайт MVC, который обрабатывает процесс входа в систему для нескольких приложений. Когда пользователь входит в систему, переменная сеанса создается в памяти приложения Login.
У приложения входа в систему есть действие контроллера, которое можно вызвать, чтобы проверить эту переменную сеанса (в контроллере) и, если она существует, возвращает представление для отображения кнопки выхода из системы. Если он не существует, он возвращает представление с кнопкой входа в систему.
На другом сайте мы можем загрузить это действие контроллера в iFrame, и кнопка отобразится так, как и должно быть.
Теперь нам нужны некоторые дополнительные функции для кнопки выхода из системы, включая раскрывающийся список для обновления настроек, имени пользователя, пароля и т. Д. Решение iFrame больше не работает, поскольку меню не может переполнить контейнер iFrame. Поэтому мы решили, что просто загрузим контент через AJAX. Но AJAX всегда возвращает кнопку входа, независимо от того, вошел ли пользователь в систему или нет.
Контроллер входа:
public ActionResult LoginButton()
{
if (Session["User"] == null)
return View("LoginButton");
else
return View("LogoutButton");
}
Вид кнопки входа в систему:
@{
Layout = "";
}
<span style="">
<a href="https://www.example.com/Welcome" class="btn btn-primary" target="_top">Login</a>
</span>
Просмотр кнопки «Выход»:
@{
Layout = "";
}
<span style="">
<a href="https://www.example.com/" class="btn btn-primary" target="_top">Log Out</a>
</span>
Все это есть на siteA.com.
На сайте B.com ...
iFrame, который загружает кнопку выхода из системы, когда пользователь вошел в систему:
<iframe style="border:none; width:150px; height:50px;" scrolling="no" src="http://siteA.com/logInButton"></iframe>
AJAX, который загружает кнопку входа независимо от статуса пользователя.
<script type="text/javascript">
$(document).ready(function () {
$('#LogInOutBtn').load("http://siteA.com/logInButton");
});
</script>
<div id=LogInOutBtn ></div>
Я также пробовал $ .get, но это тоже не работает.