2014-01-31 5 views
0

나는 "Packtpub.Getting.Started.with.Meteor.js"라는 책의 대출 라이브러리 예제를 따라 갔다. 그것은 잘 작동사용자가 로그 아웃 한 후 데이터를 제거하는 방법은 무엇입니까?

http://matloob.lendlib.meteor.com

하지만, 사용자가 로그 아웃 할 때 하나 개의 범주는 해당 범주 열려 있고 그 항목이 표시 될 때 그 항목이 페이지에 남아있는 나머지는 필터링되는 동안 : 그것은에서 실행 아웃. 페이지를 새로 고칠 때 나머지 카테고리도 필터링됩니다.

게시 '기능은 다음과 같습니다

Meteor.publish("Categories", function() { 
    Meteor.flush(); // I added this so it will flush out the remaining data, but :(

    return lists.find({owner: this.userId}, {fields: {Category: 1}}); 
}); 

답변

0

더 많은 코드를보고 withour 정확한 취약점을 지적하기 어렵다 그러나 이것은 내가 찾을 수있는 것입니다 : 하나는 설정할 수있는 사용자로 로그인하지 않은 경우에도 아이디에 세션 변수 current_list는 해당 목록 문서를 얻을 수 있습니다 :

Session.set("current_list",'ZLREaTCPiC6E7ece3') 

그래서 내가 어딘가에 코드에서 당신이 id를 부여 목록의 세부 사항을 게시한다고 가정합니다.

적어도 이것은 카테고리가 선택되었을 때 로그 아웃 한 후에도 목록이 유지되는 이유를 설명합니다 (이는 current_list이 ID를 보유 함을 의미 함).

세션 변수가 변경되면 목록이 즉시 게시되므로 목록 게시가 Deps.autorun 일 가능성이 있습니다.

코드 조각을 찾아서 게시하거나 변경하여 사용자가 해당 목록이나 카테고리의 소유자인지 확인하는 것도 가능할 수 있습니다.

0

사용자가 로그 아웃 한 결과로 서버에 몇 가지 정리를하고 수신하는 user-status 패키지를 사용하는 것이 좋습니다 : https://github.com/mizzao/meteor-user-status

Specfically

, 당신은 다음과 같은 콜백을 사용할 수 있습니다

UserStatus.on "sessionLogout", (advice) -> 
    console.log(advice.userId + " with session " + advice.sessionId + " logged out") 
관련 문제