django单点登录,django-mama-cas+django-cas-ng


环境: python3.8+django3.2.20

服务端配置

安装

pip install django-mama-cas==2.5.0

settings.py配置

INSTALLED_APPS = [
    'mama_cas',# 添加 mama_cas 到 INSTALLED_APPS
]
# 添加CAS配置  客户端127.0.0.1:8001,http://127.0.0.1:8002能访问
MAMA_CAS_SERVICES = [
    {
        # 必填项,客户端允许访问的域名,
        'SERVICE': 'http://127.0.0.1:8001',
        'CALLBACKS': ['mama_cas.callbacks.user_model_attributes', ],
    }, {
        'SERVICE': 'http://127.0.0.1:8002',
        'CALLBACKS': ['mama_cas.callbacks.user_model_attributes', ],
    },
]

urls.py配置

urlpatterns = [
    path('', include('mama_cas.urls')),  # 导入mama_cas应用到urls.py
]

对应表生成

python manage.py migrate

客户端配置

安装

pip install django-cas-ng==4.3.0

settings.py配置

INSTALLED_APPS = [
    ……,
    'django_cas_ng',  # 安装客户端应用,添加到INSTALLED_APPS
]
# 指定授权认证的后端
AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'django_cas_ng.backends.CASBackend',
)
MIDDLEWARE = [
    ……,
    'django_cas_ng.middleware.CASMiddleware'  #添加cas客户端的中间件类
]

CAS_SERVER_URL = 'http://192.168.1.100:7000/' # 服务端链接
CAS_VERSION = '3' # CAS 协议版本,可选值为 12  3,默认为 2
CAS_ADMIN_PREFIX = 'admin/'
CAS_IGNORE_REFERER = True
CAS_LOGOUT_COMPLETELY = True
# 存入所有 CAS 服务端返回的 User 数据。
CAS_APPLY_ATTRIBUTES_TO_USER = True

urls.py配置

from django_cas_ng.views import LoginView, LogoutView

def index_csa(request):
    # 判断是否登录的
    if request.user.is_authenticated:
        return HttpResponse(
            f'<p>您已登录<strong>{request.user.username}{request.user.first_name}】</strong>.</p><p><a href="/accounts/logout">Logout</a></p>')
    else:
        return HttpResponse(
            '<p><a href="/accounts/login">Login</a></p>')

urlpatterns = [
    path('accounts/login', LoginView.as_view(), name='cas_ng_login'),
    path('accounts/logout', LogoutView.as_view(), name='cas_ng_logout'),
    path('', index_csa, name='index_csa'),
]

对应表生成

python manage.py migrate