аутентификация django oauth2 с помощью client_id и client_Secret жестко - PullRequest
0 голосов
/ 18 декабря 2018

Я реализую Oauth2 в django, и мой токен обновления находится в o / token / url, я хочу определить другой URL-адрес, например:

path ('api / v1 / login', Login.as_view ()), и в моем представлении входа в систему я хочу иметь что-то вроде этого:

class login(APIView):
  def post(self,request):
    client_id = "123"
    client_Secret = "123"
    username = request.query_params.get('username')
    ....
   *problem is here*

Я хочу определить эти параметры внутри класса входа в систему, а затем передать его в o / token / url и получить токен в результате,Фактически, когда пользователь вводит адрес www.example.com/api/v1/login, он вводит только имя пользователя и пароль, и ранее внутри своего кода я говорил OAuth, что такое информация о моем клиенте, и затем генерируется токен.

1 Ответ

0 голосов
/ 19 декабря 2018

Я думаю, что вы хотите сделать, это определить маршрут входа для ваших пользователей. Это правда, что если мы передадим client_id и client_secret во внешнем интерфейсе, возникнет много проблем с безопасностью, поэтому мы скрываем их в нашем коде.Что вам нужно сделать, это определить новый маршрут для вашего входа в систему, а затем определить метод post, который требует пользователя / передать от пользователя, и отправить эти данные вместе с некоторыми данными, которые вы вводите в свой код, в команду запроса (проверьте здесь: введите здесь описание ссылки ) обратите внимание, что для получения ответа JSON в выходных данных вам необходимо вернуть Response (r.json ()), таким образом: url.py

path('api/v1/login',Login.as_view()),

view.py

class Login(APIView):
def post(self, request, *args, **kwargs):
    username = request.POST['username']
    password = request.POST['password']
    r = requests.post('http://localhost:8000/api/o/token/', #your token address
                      data = {'grant_type':'password', # your defined grant type
                              'client_id':'123', # your clinet id
                              'client_secret':'123', #your client secret
                              'username': username, # your username that you get from user
                              'password':password #your password that you get from user

}) return Response (r.json ()) #response в формате json

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...