Django实现单点登录(SSO)

SSO简介

 

单点登录(Single Sign On)功能是一个非常常用的功能,尤其是我们在多个系统之间需要登录同步的时候,例如我们在登录QQ空间后,再去QQ的其他网站,都是默认登录的状态,这就是单点登录。

 

单点登录有很多种实现方法,这里介绍一个通过共享session的实现方法。实现共享session要做的就是要让多个不同应用共用同一个session,但是session默认的是每个应用一个独立的session和cookie的,所以这里要对session的存储进行配置。

 

除了默认的session存储,我也可以设置让session存储在文件、缓存或者数据库中。

 

如果我们让session存储在一个固定位置或者数据库中,然后我们设置各个应用cookie的domain为父域地址即可实现各个cookie的相同,从而时候各个cookie中存储的sessionID一致。

 

搭建测试环境

 

下面我们来创建两个空的Django项目来进行演示,SSO1和SSO2,这里采用pycharm直接创建两个Django项目,也可以在命令行中使用django-admin startproject sso来创建,其中sso是创建的项目名称。这里也可以使用两个完全相同的项目,在不同地址启动,但是为了演示效果,这里创建了2个。

 

图片

 

创建好两个项目后,我们要给项目写一个模拟的登录,注销的功能。

 

templates文件夹下创建文件login.html文件。这里直接使用之前写过的登录页面的代码,样式就不加了,在SSO1和SSO2中都加入login.html,具体代码为:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body><div class="login_content">    <div class="page-header" id="page_header">      <h1>登录<small>Login</small></h1>    </div>    <div id="login_form">        <form method="post">          <div class="form-group">            <label for="exampleInputEmail1">Email address</label>            <input type="input" class="form-control" name="usr" id="exampleInputEmail1" placeholder="username">          </div>          <div class="form-group">            <label for="exampleInputPassword1">密码</label>            <input type="password" class="form-control" name="password" id="exampleInputPassword1" placeholder="密码">          </div>          <div id="login_butt">              <button type="submit" class="btn btn-default">登录</button>              <button type="button" class="btn btn-default" onclick="">注册</button>          </div>        </form>    </div></div></body></html>

然后在SSO1文件夹创建一个view.py文件,用来存放视图函数。(这里仅为演示SSO,就不分模块了。)

 

创建文件后的文件目录为:(SSO2项目一样)

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
.├── SSO1│   ├── __init__.py│   ├── asgi.py│   ├── settings.py│   ├── urls.py│   ├── view.py│   └── wsgi.py├── manage.py├── templates│   └── login.html└── venv    ├── bin    ├── include    ├── lib    └── pyvenv.cfg

 

插入一个小BUG

 

macbook运行环境,pycharm创建的Django应用有时候初始化有个bug,缺少os库,会报错:

 

  •  
  •  
  •  
  •  
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值