【问题标题】:TChromium : How to keep session aliveTChromium:如何保持会话活跃
【发布时间】:2016-04-09 11:41:41
【问题描述】:

当使用 DCEF3 TChromium 时,我怎样才能保持会话处于活动状态?

例如,如果我去一个网站并登录它,当我关闭我的应用程序并再次打开它时,我需要再次登录。我想让会话保持活跃,就像我使用 Google Chrome 一样。

我尝试在我的应用程序“uses”子句中添加“CefLib”并像下面的代码一样设置“CefCache”,但是虽然我可以看到文件存储在“cookies”文件夹中,但保留会话活动:

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  ceflib in 'C:\app\dcef\src\ceflib.pas';

{$R *.res}

begin
  CefCache := 'cookies';
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

提前致谢。

【问题讨论】:

  • 您是否看到 TChromium 保存了任何 cookie?设置cookie存储路径的代码见stackoverflow.com/a/23723741/80901
  • @mjn 此链接上的解决方案似乎使用了过时版本的 DCEF,代码未编译。
  • 好吧,随便...
  • 好的,下一步是研究 TChromium 源代码,看看是否有办法在应用程序启动时从磁盘加载 cookie
  • @delphirules 这是因为 Facebook 默认使用基于会话的 cookie。在登录 Facebook 之前,您可以通过选中“记住我”复选框来告诉 Facebook 尝试创建永久 cookie。如果您的浏览器配置为允许接受永久 cookie,则关闭和重新打开您的应用程序不应要求您再次登录。除非 TChromium 可能有一个特殊设置来根据 TChromium 本身的当前活动会话保留 cookie(类似于 Internet Explorer 中的“InPrivate 浏览”)。

标签: delphi session-state chromium-embedded tchromium


【解决方案1】:

官方DCEF3论坛的一个人提供了以下解决方案,经过测试并获得批准!

CookieManager: ICefCookieManager;

FormCreate:
begin
   CookiesPath := ExtractFilePath(Application.ExeName) + 'cookies';
   CookieManager := TCefCookieManagerRef.Global(nil);
   CookieManager.SetStoragePath(CookiesPath, True, nil);
end;

FormClose:   
begin
  CookieManager.FlushStore(nil);
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    相关资源
    最近更新 更多