首页 > 解决方案 > 单点登录,iframe,会话不起作用

问题描述

正在开发单点登录应用程序,其中正在登录到一个使用 Windows 2012 服务器中托管的框架版本 4.5 的应用程序,在 url 中传递 accesstoken,然后使用 IFrame,我正在尝试使用 .net 将数据发布到我的 mvc 应用程序核心 2.0 托管在 Windows 2016 服务器中。

通过 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());           
    }

会话设置正常,但在再次检查会话时重定向到操作结果后,它为空。

    public IActionResult Index()
    {
        string EmailId = HttpContext.Session.GetString("EmailId");
        if (string.IsNullOrEmpty(EmailId))
        {
            return RedirectToAction("logout", "Login");
        }
    }

然后我在 iframe 中看到一个登录页面。能否请您帮忙,我怀疑这可能是由于重定向到操作或缺少在 iframe 中设置会话。

任何帮助表示赞赏。谢谢

标签: c#

解决方案


这两个站点托管在 2 个不同的操作系统版本中。一个在 Windows server 2012 中,另一个在 Windows 2016 中。低版本不支持会话,同时发布到更高版本的操作系统。

在同一操作系统版本中托管两个站点时,代码运行良好。


推荐阅读