내가 오류는 이것이다 :세션이 구조체가 아닙니다.
Element USER is undefined in a Java object of type class [Ljava.lang.String;
내가 이런 일 할 때이 오류가 있습니다 얻을 코드의 라인 :
SESSION.user.functionName()
그것은 무작위의를 내가 가정이 일어나고있다 사용자의 세션이 만료 된 후 내 문제는 우선, SESSION
범위가 항상 구조가 아닌가요? 어떻게/왜 ColdFusion이 문자열이라고 생각합니까?
상관없이 내 주요 문제는 CFWheels를 사용하고 있습니다. 모든 컨트롤러는 물론 메인 Controller.cfc
을 확장하고 모든 컨트롤러 (공용 컨트롤러 제외)는 checkLogin
기능을 통해 필터합니다. 즉, 함수는이 있습니다 user
가 session
에 존재하고 있지 방법 중 하나를 수행하거나 다른 경우 내가 다른 곳을 보낸다 경우 기능의이 부분에서
<cfif !structKeyExists(session, "user")>
<cfif !structKeyExists(params,'layout') || params.layout EQ true>
<cfset redirectTo(route="home",error="You must be logged in to continue.") />
<cfelse>
<cfset flashInsert(error="You session has expired and you must login to continue. <a href=''>Reload the Page</a> to login.") />
<cfset redirectTo(controller="Shared",action="ajaxError") />
</cfif>
</cfif>
, 내가 명시 적으로 확인합니다.
session
이 어쨌든 문자열 일 때 코드가이 부분을 지나면 어떻게 실패합니까?
SESSION.user 개체의 다양한 항목이 올바른지 확인하기 전에 오류 줄에 도달하기 전에 여러 가지 다른 장소가 있습니다.
(편집) 오류 메시지는'user' 요소가'session'이 아닌 문자열이라고 말합니다. 허용 된 오류 메시지가 항상 100 % 정확하지는 않습니다. 키가 전혀 존재하지 않는다는 것을 의미 할 수도 있습니다. 'session.someKeyThatDoesNotExist.functionName()'에서 같은 오류가 발생합니다. – Leigh
'user'가 객체에서 정의되지 않았다는 것을 말하는 것이 아닙니까? String 클래스의 객체입니까? – Leeish
당신이 옳다면,'입니다. 그럼에도 불구하고 사용자 객체의 메소드를 사용하여 내 코드의 다른 부분을 지나쳐 버릴 수 있었는지 이해하지 못하고 단지 뷰에 도달 한 다음 실패합니다. –
Leeish