2014-02-19 14 views
1

Я реализовал приложение с использованием C# и Django, и моя проблема заключается в том, что при входе в систему клиент возвращает все правильно, sessionid и все, кроме токена csrf.Django не возвращает токен CSRF

У меня есть это в моем файле настроек в middleware_classes. Это потому, что я получаю доступ непосредственно к серверу через его IP-адрес?

Мой Джанго Войти Функция

class loginMobile(GenericAPIView): 
    serializer_class = loginSerializer 

    def post(self, request): 
     try: 
      email = request.DATA.get('email') 
      password = request.DATA.get('password') 

      user_django = authenticate(username=email, password=password) 
      login(request, user_django) 

      return Response({'success': True}) 
     except: 
      return Response({'success': False}) 

мой C# запрос:

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
       { 
        // Get the response stream 
        StreamReader reader = new StreamReader(response.GetResponseStream()); 

         if (response.Cookies != null && response.Cookies.Count != 0) 
         { 
          this.cookie_col = response.Cookies; 

          this.cookies = new List<Cookie>(); 
          foreach (Cookie c in response.Cookies) 
          { 
           this.cookies.Add(c); 
           if (c.Name.Equals("csrftoken")) 
            this.csrf_token = c.Value; 
          } 
         } 
       } 

В "Response.Cookies" Я только получить "SESSIONID" не "csrftoken" Также это происходит, когда я размещал приложение на сервере, он работает как очарование на моей локальной машине

+0

это может быть ответом http://stackoverflow.com/a/16703297/202168 – Anentropic

+0

уведомления У меня возникли проблемы с моим C# приложением, его отлично работает в браузере ... – pedrotorres

+0

Я ничего не знаю о C#, но возможно ли, что браузер уже имеет cookie csrf от просмотра другой страницы, в то время как ваше приложение C# вызывает только просмотр json (?), в котором отсутствует шаблон templatetag или декоратор, чтобы сообщить Django отправить cookie? так и http://stackoverflow.com/questions/20361653/template-less-django-ajax-does-djangos-csrf-token-get-updated-during-the-cou?rq=1 – Anentropic

ответ

0

Итак, я выясняю, как обойти мою проблему,

я заставил Джанго вернуть маркер CSRF так:

return Response({'success': True, 'csrf':csrf(request)}) 
Смежные вопросы