Как настроить аутентификацию Microsoft в django проекте - PullRequest
1 голос
/ 22 марта 2020

Я использую django -microsoft-auth в моем Django проекте. Я следовал этому руководству. Теперь я могу войти через учетную запись Microsoft (адрес: http://localhost: 8000 / admin ), но я не знаю, как добавить посмотреть, что будет «Войти через Microsoft» и как связать это представление со страницей аутентификации Microsoft. Будет здорово, если кто-нибудь скажет мне, как это сделать. Вы можете увидеть эту картинку. Здесь кнопка Microsoft добавляется автоматически для входа в систему. Как настроить такую ​​кнопку на главной странице?

1 Ответ

0 голосов
/ 30 апреля 2020

Я нашел удобный способ аутентификации Microsoft. Я использовал График Microsoft . Есть хорошо написанная документация для Microsoft Graph. Вы можете обратиться к этому здесь . Вы можете игнорировать календарную часть, если вас интересует только аутентификационная часть.

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

В данном уроке они аутентифицируют пользователя, используя сеансы. Я считаю, что аутентификация Django удобнее, поэтому я просто отредактировал функцию обратного вызова и выхода из системы, как указано ниже.

Здесь я пишу только функцию обратного вызова и выхода из системы.

Как решена моя проблема: теперь я могу просто изменить URL для входа в файл urls.py. Если я хочу установить кнопку со страницей входа, я могу просто использовать элемент привязки, ссылающийся на URL входа.

    def callback(request):
      # Get the state saved in session
      expected_state = request.session.pop('auth_state', '')
      # Make the token request
      token = get_token_from_code(request.get_full_path(), expected_state)
      # Get the user's profile
      user = get_user(token)

      # Get user info
      # user attribute like displayName,surname,mail etc. are defined by the 
      # institute incase you are using single-tenant. You can get these 
      # attribute by exploring Microsoft graph-explorer.

      username = user['displayName']
      password = user['surname']
      email = user['mail']

      try:
          # if use already exist
          user = User.objects.get(username=username)

      except User.DoesNotExist:
          # if user does not exist then create a new user
          user = User.objects.create_user(username,email,password)
          user.save()

      user = authenticate(username=username,password=password)

      if user is not None:
          login(request,user)
          messages.success(request,"Success: You were successfully logged in.")
          return redirect('home')
      return redirect('home')

    def sign_out(request):

      logout(request)
      messages.success(request, "Successfully Logged Out")

      return redirect('home')
...