0

Django 기반 사이트에 대한 크롬 확장 기능 (링크 제출 기능 포함)을 만들고 있습니다. JavaScript에서 링크를 게시하려면 django-tastypie을 사용하고 있습니다. 그러나 링크 제출자를 결정하기 위해 JavaScript에서 장고 세션에 액세스하는 방법을 알 수 없습니다. console.log(document.cookie)을 사용하면 document.cookie가 당장 장고가 제공되는 웹 사이트의 쿠키가 아니라 현재 페이지의 쿠키에 액세스하는 것처럼 가능성이 있다고 생각하지 않습니다. 어떤 도움을 주시면 감사하겠습니다.JavaScript에서 Django에 로그인 한 사용자 정보에 액세스하는 방법은 무엇입니까?

+2

OAuth가 필요한 이유입니다. 사용자가 OAuth를 통해 로그인하여 API에 액세스하게하면 작업중인 사용자를 알기 위해 앞뒤로 전달할 수있는 OAuth 토큰을 받게됩니다. –

+0

크리스, 이것 좀 자세히 설명해 주시겠습니까? 이 http://django-tastypie.readthedocs.org/en/latest/authentication_authorization.html#oauthauthentication은 본질적으로 인증을 요구하여 내 API를 보호하는 것에 대한 것입니다. tastypie에서 JavaScript로 로그인 한 사용자 정보를 얻는 데 어떤 단서가 있습니까? – Arman

+0

죄송합니다. tastypie에 내장 된 OAuth는 소비 지원 만 할뿐, 즉 토큰이 유효한지 확인하지만 OAuth 서비스와 실제로 통신하지는 않습니다. 더 많은 기능을 사용하려면 django-oauth와 같은 자체 OAuth 서버를 구현하거나 Google, Twitter 등과 같은 제 3 자 OAuth 공급자로부터 선택해야합니다. 각 제공 업체는 인증 된 OAuth 세션. –

답변

0

내가 할 수있는 한이 작업을 수행하는 데는 두 가지 방법이 있습니다.

  1. 장고 애플 리케이션 서버 측에서 OAuth를 구현하고 사용자를 인증하는 Javascript oAuth method를 사용합니다. 이것은 oAuth를 아직 제공하지 않았다면 아마도 많은 일을 할 것입니다. 따라서 나쁜 생각 일 수 있습니다.

  2. 사이트의 페이지에 iframe을 사용하십시오. 콘텐츠 스크립트를 iframe에 삽입하고 데이터를 가져옵니다. 특정 엔드 포인트를 설정해야 할 수도 있습니다.

    { 
        ..., 
        "content_scripts": [ 
        { 
         "matches": ["http://yoursite.com/api/extension"], 
         "js": ["content_script.js"], 
         "all_frames": true 
        } 
        ], 
        ... 
    } 
    

    엔드 포인트가 다른 콘텐츠 스크립트가 iframe에로드, 다음과 같이 보일 수 있습니다하십시오 match pattern 사용하여 manifest에서

... 
<div id="user_info">joe_user</div> 
... 

그런 다음 스크립트 것 #user_info div의 textContent을 가져 와서 배경 페이지로 보내면됩니다.

var elem = document.querySelector('#user_info'); 
chrome.extension.sendMessage({ 
    text: elem.textContent 
}); 

메시징에 대한 자세한 내용은 Google의 Message Passing documentation을 참조하십시오.

사용자 정보가 모두 필요한 경우 사용자에게 도움이 될 것이라고 생각합니다. 이러한 민감한 정보는 보내지 않을 것입니다.

관련 문제