博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django-sso单点登陆的实现
阅读量:4331 次
发布时间:2019-06-06

本文共 2259 字,大约阅读时间需要 7 分钟。

环境准备

  环境规格:

    python3.5

    django2.0

    django-simple-sso-0.14

  环境安装:

    pip install django-simple-sso-0.14

  环境说明:

    opstest01为django应用,作为服务端使用,端口8001

    testsso为django应用,作为客户端使用,端口8000

单点概念

  参考:https://www.cnblogs.com/morethink/p/8047711.html

服务端实现(opstest01)

  配置修改:

    修改setting.py文件

    INSTALLED_APPS中添加'simple_sso.sso_server',

    

    执行python manage.py makemigrations, python manage.py migrate

    添加表数据

    sso_server_consumer表中添加一行数据指定私钥公钥,用于客服端的配置使用

    

    编辑urls.py

    暴露两个访问地址

1 from django.contrib import admin 2 from django.urls import path, include 3 from django.conf.urls import url 4 from django.contrib.auth.views import LoginView 5  6 #sso 7 from simple_sso.sso_server.server import Server 8 test_server = Server() 9 10 urlpatterns = [ 11 path('admin/', admin.site.urls), 12 url('^server/', include(test_server.get_urls())), 13 url(r'^login/$', LoginView.as_view(template_name='admin/login.html'), name="login"), 14 ]

 

    server为服务端认证,获取token,验证地址;login为django系统自带登陆地址作测试用(测试用户通过python manage.py createsuperuser创建)

    到处服务端创建完成!

客户端实现

  创建django项目testsso做为客户端测试使用

  编辑setting.py文件

    INSTALLED_APPS中添加'simple_sso.sso_client',

    结尾处添加sso相关参数

    #sso

    SSO_SERVER = 'http://127.0.0.1:8001/server/'

    SSO_PUBLIC_KEY = 'public'

    SSO_PRIVATE_KEY = 'private'
    LOGIN_URL = '/testsso/client/'    #login_required未登陆跳转地址

  添加views.py

from django.http import JsonResponsefrom django.contrib.auth.decorators import login_required# Create your views here.@login_requireddef testClientSSO(request):    json_data = {'name': 'nalanxiao', 'id': 0}    return JsonResponse(json_data)

 

    login_require为django系统装饰器,判断登陆状态

    testClientSSO为测试页面

  编辑urls.py

from django.urls import includefrom django.conf.urls import urlfrom simple_sso.sso_client.client import Clientfrom django.conf import settingsfrom . import viewstest_client = Client(settings.SSO_SERVER, settings.SSO_PUBLIC_KEY, settings.SSO_PRIVATE_KEY) urlpatterns = [ url(r'^client/', include(test_client.get_urls())), url(r'test/', views.testClientSSO, name='testSSO'), ]

 

    添加client,test两个访问地址

测试

  访问http://127.0.0.1/8000/client/test/页面调整到8001/login/页面

  

  登陆完成后跳转回test页面:

  

  cookie中增加sessionid

gihub:   

觉得有帮助就点亮小星星吧

 

转载于:https://www.cnblogs.com/rohero/p/10651518.html

你可能感兴趣的文章
在mvc3中使用ffmpeg对上传视频进行截图和转换格式
查看>>
python的字符串内建函数
查看>>
Spring - DI
查看>>
微软自己的官网介绍 SSL 参数相关
查看>>
Composite UI Application Block (CAB) 概念和术语
查看>>
ajax跨域,携带cookie
查看>>
阶段3 2.Spring_01.Spring框架简介_03.spring概述
查看>>
阶段3 2.Spring_02.程序间耦合_1 编写jdbc的工程代码用于分析程序的耦合
查看>>
阶段3 2.Spring_01.Spring框架简介_04.spring发展历程
查看>>
阶段3 2.Spring_02.程序间耦合_3 程序的耦合和解耦的思路分析1
查看>>
阶段3 2.Spring_02.程序间耦合_5 编写工厂类和配置文件
查看>>
阶段3 2.Spring_01.Spring框架简介_05.spring的优势
查看>>
阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
查看>>
阶段3 2.Spring_02.程序间耦合_4 曾经代码中的问题分析
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_2 spring中的Ioc前期准备
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
查看>>
阶段3 2.Spring_02.程序间耦合_8 工厂模式解耦的升级版
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
查看>>
阶段3 2.Spring_04.Spring的常用注解_3 用于创建的Component注解
查看>>
阶段3 2.Spring_04.Spring的常用注解_2 常用IOC注解按照作用分类
查看>>