【发布时间】:2018-04-26 17:22:31
【问题描述】:
我有一个 MVC 站点来处理一些应用程序的登录过程。当用户登录时,会在登录应用程序的内存中创建一个会话变量。
登录应用程序有一个可以调用的控制器操作,它检查该会话变量(在控制器中),如果它存在,则返回一个视图以显示一个注销按钮。如果不存在,则返回一个带有登录按钮的视图。
在另一个站点上,我们可以在 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 上。
在siteB.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 但这也不起作用。
【问题讨论】:
标签: javascript .net ajax session