admin管理员组文章数量:1568305
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 >
<div >
<h1>登录<small>Login</small></h1>
</div>
<div >
<form method="post">
<div >
<label for="exampleInputEmail1">Email address</label>
<input type="input" name="usr" placeholder="username">
</div>
<div >
<label for="exampleInputPassword1">密码</label>
<input type="password" name="password" placeholder="密码">
</div>
<div >
<button type="submit" >登录</button>
<button type="button" 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库,会报错:
版权声明:本文标题:Django实现单点登录(SSO) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1726253921a1062748.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论