برنامه نویسی

اجرای SSO در پروژه Django

برای برخی از توسعه دهندگان ، SSO ممکن است هنوز هم برای شنیدن در مورد روزانه جدید باشد ، در حالی که این مدتی در آنجا بوده است و ما روزانه از هر وسیله ای که استفاده می کنیم استفاده می کنیم. Google یکی از بزرگترین سازمان است که برای اکثر خدمات به SSO تکیه می کند. SSO در مورد بهبود UX (تجربه کاربر) جنبه مهمی است. بنابراین اکنون سوالی که باید از خود بپرسید این است:

SSO چیست؟

Single Sign-On (SSO) روشی احراز هویت است که به کاربران امکان می دهد تا با یک مجموعه اعتبار ، به چندین برنامه و وب سایت وارد شوند.

SSO چیست؟

مطالعه موردی SSO (Google)

قبل از گفتن یک کلمه در اینجا ، درک کنید که این فقط یک اجرای کم عمق سیستم است ، من دوست دارم این راهی برای شما باشد که بتوانید این موضوع را بهتر درک کنید و بدانید که چگونه می توانید چیزی شبیه به USECase خود را پیاده سازی کنید.

Google SSO

به جهت فلش و خدمات مختلفی که به آن اشاره می کنیم توجه کنید. بدون آزار و اذیت بیشتر ، بیایید این کار را انجام دهیم !!!

اجرای

این آموزش اجرای SSO در Django را با استفاده از Google SSO پوشش می دهد. ما چند کتابخانه خواهیم داشت که به آنها وابسته باشیم و کد بعداً در یک repo github یافت می شود.

  • ایجاد پروژه و نصب وابستگی ها
mkdir django_sso

cd django_sso

python -m venv .venv

source .vevn/bin/activate

pip install python-social-auth social-auth-app-django

django-admin startproject django_sso .

python manage.py startapp accounts

touch accounts/urls.py
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • پیکربندی تنظیمات
# django_sso/settings.py
INSTALLED_APPS = [
    ...
    'social_django',
]

TEMPLATES = [
 #...
        'DIRS': [
            BASE_DIR / 'templates',
        ],
 #...
]

AUTHENTICATION_BACKENDS = (
    'social_core.backends.google.GoogleOAuth2',
    'django.contrib.auth.backends.ModelBackend',
)

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'your-client-id'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'your-client-secret'
LOGIN_URL = 'login'
LOGOUT_URL = 'logout'
LOGIN_REDIRECT_URL = 'home'=
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • نمایش ها و تنظیمات URL ها
# accounts/urls.py
from django.urls import path, include
from accounts.views import login_view, logout_view, home_view, generate_sso_token

urlpatterns = [
    path('auth/', include('social_django.urls', namespace="social")),
    path('login/', login_view, name="login"),
    path('logout/', logout_view, name="logout"),
    path('home/', home_view, name="home"),
    path('generate-sso-token/', generate_sso_token, name="generate_sso_token"),
]

# django_sso/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('accounts.urls')),
]

# accounts/views.py
from django.shortcuts import render, redirect
from django.contrib.auth import logout
from django.contrib.auth.decorators import login_required
from django.utils import timezone
from .models import SSOUserToken
import uuid

def login_view(request):
    if request.user.is_authenticated:
        return redirect('home')
    return render(request, 'login.html')

def logout_view(request):
    logout(request)
    return redirect('login')

@login_required
def home_view(request):
    return render(request, 'home.html')

@login_required
def generate_sso_token(request):
    if request.method == 'POST':
        user = request.user
        expires_at = timezone.now() + timezone.timedelta(hours=1)
        token = str(uuid.uuid4())
        SSOUserToken.objects.create(
            user=user,
            token=token,
            expires_at=expires_at
        )
        return render(request, 'sso_token.html', {'token': token})
    return redirect('home')
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

بیایید اکنون نگاهی به پرونده های HTML بیندازیم.

دکمه گیتوب

نتایج

نتیجه ممکن است در زمانی که این آموزش را مشاهده می کنید یکسان نباشد ، کد منبع با برخی از سبک های دیگر به روز شده است.

نتایج کد

پایان

امیدوارم که از کاردستی Django SSO لذت ببرید و فهمیدید که چه تاثیری در UX دارد. کاردستی مبارک فراموش نکنید که برای اطلاعات بیشتر دنبال کنید. افکار خود را در بخش نظرات رها کنید.

نوکر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا