【问题标题】:How to detect if session is live or expired?如何检测会话是活动的还是过期的?
【发布时间】:2018-07-16 16:25:06
【问题描述】:

是否可以通过调用来确定我的会话在 gsoap 客户端中是否仍然存在?

我看到检查会话是否仍然存在的唯一方法是在每次肥皂调用后检查所有 cookie 值是否匹配。由于设置了 tcp_keep_alive 标志,gsoap 似乎会意识到会话处于活动状态。 gsoap 中是否有功能可以让我在调用肥皂之前进行检查?是否有回调会通知我会话丢失?或者我应该为此目的制作一个虚拟肥皂方法?

【问题讨论】:

  • Cookie 是一种方法,正如您已经指出的那样。 Section 19.11 也有关于监视 SOAP_EOF 的 gSOAP 错误的注释。还有关于 UNIX 实现的注释关于为 SIGPIPE 实现信号处理程序。

标签: session soap gsoap


【解决方案1】:

您可以使用 Genivia 插件来 Ckeck 并在 localhost:8080 上创建或更新在任何路径上都有效的会话:

soap->cookie_domain = "localhost:8080";
struct soap_session *session = soap_start_session(soap, NULL, NULL); 

要创建新的会话变量或修改该会话中的现有会话变量:

soap_set_session_var(soap, "session_var_name", "session_var_value", NULL, NULL);

访问该会话变量的值:

const char *value = soap_get_session_var(soap, "session_var_name", NULL, NULL);

删除该会话变量:

soap_clr_session_var(soap, "session_var_name", NULL, NULL); 

【讨论】:

    猜你喜欢
    • 2012-06-21
    • 2017-05-01
    • 2013-05-25
    • 2015-03-22
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    相关资源
    最近更新 更多