Python集成CAS单点登录方案 django2.1.9+django-cas-ng3.6.0

41 篇文章 1 订阅
29 篇文章 1 订阅

Python集成CAS单点登录方案 django2.1.9+django-cas-ng3.6.0

安装依赖

pip install django==2.1.9
pip install django-cas-ng==3.6.0

setting.py

ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_cas_ng',
]
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    #'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django_cas_ng.middleware.CASMiddleware',
]
AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'django_cas_ng.backends.CASBackend',
)
CAS_SERVER_URL = 'http://127.0.0.1:8080/cas/login'
CAS_REDIRECT_URL = '/'
CAS_VERSION = '3'
CAS_IGNORE_REFERER = True
SESSION_EXPIRE_AT_BROWSER_CLOSE = True ##此项配置可让浏览器关闭后下次再打开需要重新登录

urls.py

from django.conf.urls import url
from django.contrib import admin
from django.urls import path
import django_cas_ng.views as casviews
from . import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/',views.login),
    path('logout/',casviews.LogoutView().get),
    url(r'^accounts/login/', casviews.LoginView().get, name='cas_ng_login'),
    url(r'^accounts/logout/', casviews.LogoutView().get, name='cas_ng_logout'),
    path('accounts/callback/', casviews.CallbackView().get, name='cas_ng_callback'),
]

views.py:

from django.views.decorators.csrf import csrf_exempt
from django.contrib.auth.decorators import login_required
from django.http import HttpRequest,JsonResponse
from django.shortcuts import render,HttpResponse,HttpResponseRedirect,redirect,reverse
from base.loadConfig import BASE_CONFIG
from base.loadConfig import config
import base.functions
import log.log

@login_required()
def login(request:HttpRequest):
    if request.user.is_authenticated:
        username=str(request.user.username)
        ip = "127.0.0.1"
        if "HTTP_X_FORWARDED_FOR" in request.META.keys():
            ip = request.META['HTTP_X_FORWARDED_FOR']
        elif "X_FORWARDED_FOR" in request.META.keys():
            ip = request.META['X_FORWARDED_FOR']
        elif "REMOTE_ADDR" in request.META.keys():
            ip = request.META["REMOTE_ADDR"]
        else:
            ip="127.0.0.1"
        log.log.info("login - {} - {}".format(username,ip))
        return JsonResponse({"username":username,"ip":ip})
def index(request:HttpRequest):
    return redirect(config["cas-BaseUrl"])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值