【问题标题】:How do I check if a session variable is set?如何检查是否设置了会话变量?
【发布时间】:2016-02-29 17:25:35
【问题描述】:

在我的详细信息页面中检查会话变量是否已设置时,我不断收到“自定义脚本模块中的错误”。即使没有设置会话变量,这个语句不应该给我真假而不是错误输出吗?

<cfif StructKeyExists(session.mysiteShibboleth, "isAuthenticated") and (session.mysiteShibboleth.isAuthenticated) >
    <cflog text="Session-Defined-5: isAuthenticated" type="Information" file="Authentication">
<cfelse>
    <cflog text="Session-Defined-7: It's not authenticated'" type="Information" file="Authentication">
</cfif>

在我的 authenticate.cfm 文件中,这是设置会话变量的位置。

<cfif cgiReferer eq shibboleth_url>
    <cfscript>
        session.mysiteShibboleth = StructNew();
        session.mysiteShibboleth.username=REReplace(http_header.headers.eppn, "@mysite.com","","ALL");
        session.mysiteShibboleth.mail=http_header.headers.eppn;
        session.mysiteShibboleth.groups=ArrayToList(REMatch('WEB\.[A-Z.-]+', http_header.headers.member));
        session.mysiteShibboleth.isAuthenticated="true";
    </cfscript>
</cfif>

我也尝试了以下方法,但仍然出错。我已阅读此thread,但它似乎无法解决我的问题。

<cfif IsDefined("session.mysitecShibboleth.isAuthenticated")>

【问题讨论】:

  • 你遇到了什么错误?
  • 它是在抱怨session.mysiteShibboleth.isAuthenticated 还是只是在抱怨session.mysiteShibboleth?您的第一个代码块假定 session.mysiteShibboleth 存在,但情况可能并非如此。您需要向我们提供有关此类事情的实际错误消息。
  • application.cfc 中是否开启了会话管理?

标签: coldfusion session-variables coldfusion-10


【解决方案1】:

在检查mysiteShibboleth 上的密钥之前,您需要确保session.mysiteShibboleth 存在。这可能是您问题的根源,但如果您将收到的实际错误消息提供给我们,我们可以为您提供更好的帮助。

另外,请注意&lt;cfif IsDefined("session.mysitecShibboleth.isAuthenticated")&gt; 在变量名中有一个错误的c

** 编辑:添加代码示例

<cfif StructKeyExists(session, "mysiteShibboleth">
    <cfif StructKeyExists(session.mysiteShibboleth, "isAuthenticated") and (session.mysiteShibboleth.isAuthenticated) >
    . . . 
    </cfif>
<cfelse>
    . . . 
</cfif>

【讨论】:

  • 我不知道 session.mysiteShibboleth 是否存在,这就是我检查但检查错误的原因。
  • 我在浏览器上看到的唯一错误是“自定义脚本模块中的错误”。我不确定在哪里可以查看更多信息。关于错误。
  • 我查看了 CommonSpot 日志,它显示了这个异常:异常:元素 MYSITESHIBBOLETH.ISAUTHENTICATED 在 SESSION 中未定义。
  • 即使这是真的,IsDefined("session.mysitecShibboleth.isAuthenticated") 不应该解释这个错误吗?
  • 您能否检查您的 Application.CFC 和 session.mysitecShibbloeth 在您的季节是否可用?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 2014-05-24
  • 2014-09-15
  • 2012-05-11
  • 2011-04-05
  • 1970-01-01
相关资源
最近更新 更多