2016-04-06 2 views
1

Я использую AngularJS как клиент fw и django rest framework. Я нахожусь в части аутентификации и задаюсь вопросом, можно ли POST us/pw, а затем войти в систему пользователя на бэкэнд, а затем получить доступ с помощью @login_required.Django REST логин с сервера

Я бы хотел избежать использования $ cookie в клиенте, а затем, если я не зарегистрирован на сервере, ответит 404, а затем угловым перенаправляет пользователя на страницу входа. Когда пользователь регистрируется у пользователя, у него также будет доступ к серверу.

Можно даже войти в систему на django на localhost: 8000, а затем получить доступ с localhost: 82?

За попытку я войти в админ-странице (теперь пользователь вошел в систему), а затем доступ к некоторой информации от локального хоста: 82, который не работает

angular.js:11442 GET http://localhost:8000/website/api/order/?format=json 404 (Not Found) 


@api_view(['POST']) 
def login(request): 
    if request.method == 'POST': 
     #print(request.data['password']) 
     username = request.data['username']; 
     password = request.data['password']; 
     user = auth.authenticate(username=username,password=password); 
     if user is not None: 
      if user.is_active: 
       auth.login(request,user); 
       return Response(200) 
     else: 
      return Response(404) 
    else: 
     return Response(404) 

проверки достоверности работы, когда я печатаю реальное имя пользователя и пароль, я получаю 200 в качестве ответа. Если я вхожу в систему с учетной записью администратора от клиента, я не смогу получить доступ к странице администратора, если я наберу localhost/admin? В настоящее время я не вошел в систему, когда я пытаюсь получить доступ к админ-странице.

+0

Помог ли мой ответ? Если да, то согласитесь, пожалуйста. – ilse2005

ответ

1

Если вы хотите использовать SessionAuthentication, вы должны быть на одном хосте. У сервера нет возможности проверить, являетесь ли вы одним и тем же пользователем при доступе к странице с другого хоста.

Если ваше приложение angular.js запущено на другом хосте, вы должны пройти аутентификацию через TokenAuthentication или еще более сложный метод, такой как JSON WTA.

Смежные вопросы