Am正在处理单一登录应用程序,该应用程序正在登录到Windows 2012 Server中托管的框架版本为4.5的一个应用程序,在URL中传递了访问令牌,然后使用IFrame,试图将数据发布到我的mvc应用程序中Windows 2016服务器中托管的.net core 2.0。
通过iframe验证访问令牌,该框架还在本地设置会话数据,然后在页面生命周期内使用该会话。
在我的authcontroller中验证请求之后,我有了RedirectToAction方法,这使我的会话为空。请任何人帮忙
- 我的iframe网址-http://ipaddress/Auth/VaildateToken?ssoToken=4234dfgdfg
正在验证令牌并设置会话的MVC应用程序。
public IActionResult VaildateToken(string ssoToken)
{
var result = _Service.VaildateAccessToken(ssoToken);
if (result != null)
{
SetSession(result);
return RedirectToAction("Index", "Controller");
}
else
{
return RedirectToAction("NoAccess");
}
}
public void SetSession(Client client)
{
HttpContext.Session.SetString("EmailId", client.EmailId.ToString());
HttpContext.Session.SetString("UserName", client.UserName.ToString());
}
会话设置良好,但在再次检查会话时将其重定向到Action结果后,则为空。
public IActionResult Index()
{
string EmailId = HttpContext.Session.GetString("EmailId");
if (string.IsNullOrEmpty(EmailId))
{
return RedirectToAction("logout", "Login");
}
}
,然后我在iframe中看到一个登录页面。您能帮忙吗?我怀疑这可能是由于重定向到操作所致,还是缺少在iframe中设置会话的原因。
感谢您的帮助。谢谢
答案 0 :(得分:0)
这两个站点托管在2个不同的OS版本中。一个在Windows Server 2012中,另一个在Windows 2016中。发布到较高版本的OS时,较低版本不支持会话。
在将两个站点托管在相同的OS版本中时,代码可以正常工作。