钉钉环境部分Anroid手机,微信、企业微信pc版,登录失败的解决办法原创
金蝶云社区-暗夜
暗夜
13人赞赏了该文章 5324次浏览 未经作者许可,禁止转载编辑于2020年05月28日 15:24:03

原始反馈:

      1、钉钉环境,使用第三方集成方案接入金蝶云星空,提示:登录状态丢失;
      2、使用微信、企业微信pc端访问金蝶云星空,提示:登录状态丢失后;


原因分析:

      1、windows服务器 .netframework   4.7.2版本,sameSite 默认值是Lax,4.7.2以前的版本默认值是None;(Lax表示不允许跨域,None表示可以跨域);
      2、按说即使sameSite设置为Lax,不跨域的话,也不会发生session丢失的情况,但是钉钉认为:访问不同的页面也是跨域。。结果就是,session丢失,从而导致页面显示登录失败; 
      3、目前只在钉钉环境,部分安卓机型中发生,跟这些机型webview的内核有关 ;
      4、目前钉钉的回复;“暂时只能通过修改samesite解决”

 

解决办法:

     只需要修改服务器配置即可,不需要写代码 (.netframework 版本在 4.7.2以下不会登录失败,不需要解决);
     1、确保服务器对应的.netframework 版本在 4.7.2及以上,如果不是这个版本以上修改会报错;
     2、修改webconfig,确保包含以下配置:

  <configuration> 
  <appSettings>
    <add key="aspnet:SuppressSameSiteNone" value="true" />
  </appSettings> 
  <system.web> 
    <authentication> 
      <forms cookieSameSite="None" /> 
    </authentication> 
    <sessionState cookieSameSite="None" /> 
  </system.web> 
  </configuration>
   修改示例,修改前一定要备份:

Image_20200528150616.png

      3、修改后,重启iis;

Tip1:查询.netframwork版本的dos命令:

           cd %WINDIR%\Microsoft.NET\Framework\v4.0.30319
           MSBuild /version 
 Tip2:在 ASP.NET 中使用 SameSite cookie 的相关知识:
           https://docs.microsoft.com/zh-cn/aspnet/samesite/system-web-samesite#known


赞 13