单点登录前戏(未使用jwt版本)
建表
from django.db import models
import jwt
# Create your models here. # 角色表
class RoleTable(models.Model):
role = models.CharField(max_length=30, verbose_name='角色')
creator = models.CharField(max_length=30, verbose_name='创建者')
create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
# 创建者
# 创建时间 def __str__(self):
return self.role class Meta:
db_table = 'role' # 用户表
class UserTable(models.Model):
name = models.CharField(max_length=30, verbose_name='员工姓名')
sex = models.CharField(max_length=10, choices=(('', '女'), ('', '男')), verbose_name='员工性别')
username = models.CharField(max_length=32, verbose_name='用户名')
password = models.CharField(max_length=32, verbose_name='密码')
create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
login_time = models.DateTimeField(verbose_name='最近登录时间', auto_now=True)
role = models.OneToOneField(RoleTable, on_delete=models.CASCADE) def __str__(self):
return self.name class Meta:
db_table = 'user'
models.py
配置url
from django.urls import path
from AccountManager import views
app_name = 'account'
urlpatterns = [
path('login/', views.Login, name='login'),
path('add/', views.addUser, name='add'),
]
配置salt
# 加密字段
SALT = 'haxitaig!@#$%^&*' #根据公司自定制salt
创建日志
首先自己配置settings.py
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters':{
"generic": {
"format": "%(asctime)s [%(process)d] [%(levelname)s] %(message)s",
"datefmt": "[%Y-%m-%d %H:%M:%S %z]",
"class": "logging.Formatter"
},
"access": {
"format": "%(message)s",
"class": "logging.Formatter"
}
},
'loggers': {
"AuthCert.error": {
"level": "INFO",
"handlers": ["error_file"],
"propagate": 1,
"qualname": "AuthCert.error"
},
"AuthCert.access": {
"level": "INFO",
"handlers": ["access_file"],
"propagate": 0,
"qualname": "AuthCert.access"
}
},
'handlers': {
"console": {
"class": "logging.StreamHandler",
"formatter": "generic",
"stream": "sys.stdout"
},
"error_file": {
"class": "logging.FileHandler",
"formatter": "generic",
"filename": "./log/error.log"
},
"access_file": {
"class": "logging.handlers.RotatingFileHandler",
"maxBytes": 1024 * 1024,
"backupCount": 5,
"formatter": "generic",
"filename": "./log/acess.log",
}
},
}
settings.py
接着,在views.py中生成logging
import logging
logger = logging.getLogger('AuthCert.error')
#然后使用logger.ingo('')、 logger.error('')
添加数据
def addUser(request):
"""
增加用户
""" if request.method == "POST": #添加数据
role = request.POST.get('role')
# creator = request.POST.get('creator')
name = request.POST.get('name')
sex = request.POST.get('sex')
username = request.POST.get('username')
password = request.POST.get('password')
# if not all([role, creator, name, sex, username, password]):
if not all([role, name, sex, username, password]): #如果参数没有填写完毕,返回‘参数不全’
logger.error('canshubuquan')
return HttpResponse('参数不全')
# 对密码进行MD5加密
else:
try:
pwd_salt = password + SALT #对前端填写的password进行加盐
password = hashlib.md5(pwd_salt.encode())
password = password.hexdigest()
print('password= ', password)
# 保存角色数据导数据库
Role = RoleTable()
Role.role = role
# Role.creator = creator
Role.save()
# 保存用户数据到数据库
User = UserTable()
User.role = Role
User.name = name
User.sex = sex
User.username = username
User.password = password
User.save() logger.info('增加用户成功')
return HttpResponse('add user success')
except Exception as e:
logger.error(e)
return HttpResponse(e)
else:
return render(request, 'add.html')
views.py
用户登录
def Login(request):
"""
用户登录
"""
if request.method == "POST":
username = request.POST.get('username')
pwd = request.POST.get('password')
pwd_salt = pwd + SALT #使用salt加密pwd
password = hashlib.md5(pwd_salt.encode())
password = password.hexdigest()
user = UserTable.objects.filter(username=username, password=password) #使用前端获取的username,和加密后的pwd,与数据库里的username,pwd进行对比 if len(user):
logger.info('success') #打印日志
return HttpResponse('登录成功')
else:
logger.error('username 、 password Error')
return HttpResponse('用户名密码不正确')
else:
return render(request, 'login.html')
views.py
单点登录前戏(未使用jwt版本)的更多相关文章
- JWT&RSA实现单点登录(详细介绍)
今天给大家讲一下基于JWT&RSA的单点登录(Single Sign On,简称SSO)解决方案 概念 首先要了解几个概念 单点登录(Single Sign On) JWT RSA 背景 为什 ...
- Spring Security构建Rest服务-1300-Spring Security OAuth开发APP认证框架之JWT实现单点登录
基于JWT实现SSO 在淘宝( https://www.taobao.com )上点击登录,已经跳到了 https://login.taobao.com,这是又一个服务器.只要在淘宝登录了,就能直接访 ...
- 看图理解JWT如何用于单点登录
单点登录是我比较喜欢的一个技术解决方案,一方面他能够提高产品使用的便利性,另一方面他分离了各个应用都需要的登录服务,对性能以及工作量都有好处.自从上次研究过JWT如何应用于会话管理,加之以前的项目中也 ...
- 170810、spring+springmvc+Interceptor+jwt+redis实现sso单点登录
在分布式环境中,如何支持PC.APP(ios.android)等多端的会话共享,这也是所有公司都需要的解决方案,用传统的session方式来解决,我想已经out了,我们是否可以找一个通用的方案,比如用 ...
- springboot+security+JWT实现单点登录
本次整合实现的目标:1.SSO单点登录2.基于角色和spring security注解的权限控制. 整合过程如下: 1.使用maven构建项目,加入先关依赖,pom.xml如下: <?xml v ...
- 初识单点登录及JWT实现
单点登录 多系统,单一位置登录,实现多系统同时登录的一种技术 (三方登录:某系统使用其他系统的用户,实现本系统登录的方式.如微信登录.支付宝登录) 单点登录一般是用于互相授信的系统,实现单一位置登录, ...
- Spring Security整合JWT,实现单点登录,So Easy~!
前面整理过一篇 SpringBoot Security前后端分离,登录退出等返回json数据,也就是用Spring Security,基于SpringBoot2.1.4 RELEASE前后端分离的情况 ...
- springBoot整合spring security+JWT实现单点登录与权限管理--筑基中期
写在前面 在前一篇文章当中,我们介绍了springBoot整合spring security单体应用版,在这篇文章当中,我将介绍springBoot整合spring secury+JWT实现单点登录与 ...
- spring boot:spring security+oauth2+sso+jwt实现单点登录(spring boot 2.3.3)
一,sso的用途 ? 1,如果有多个应用系统,用户只需要登录一次就可以访问所有相互信任的应用系统. 不需要每次输入用户名称和用户密码, 也不需要创建并记忆多套用户名称和用户密码. 2,系统管理员只需维 ...
随机推荐
- SQLServer版本
- 洛谷P1032 字串变换-题解
https://www.luogu.org/problemnew/show/P1032--(题目传送) 好在数据范围很小,暴力一点也能过.思路较简单,按照所有规则,从第一位开始广搜. 注意:1.str ...
- 【Unity游戏开发】记一次解决 LuaFunction has been disposed 的bug的过程
一.引子 RT,本篇博客记录的是马三的一次解决 LuaFunction has been disposed 的bug的全过程,事情还要从马三的自研框架 ColaFrameWork 说起.最近,马三在业 ...
- file 多次上传附件功能完善
之前解决了一个页面中的单个附件上传问题,使用的是 id 定位.但是一个页面中,可能存在多个附件上传的地方,这时候如果继续使用 id,会出问题. 我依旧会上传一个附件.附件链接地址: https://f ...
- nautilus-open-terminal----在当前目录下打开终端
nautilus-open-terminal很有用的插件--鼠标右键打开终端 1.1 fedora安装 # yum -y install nautilus-open-terminal安装nautilu ...
- DIV内文字两端对齐
div{ text-align: justify; text-justify:inter-ideograph; }
- 小程序git发布
微信小程序提交项目: 1.码云上创建一个项目 xiaochengxu 2.本地创建一个文件夹,然后在控制台使用 cd 文件夹名字 (将文件拉到控制台) 3.使用 git init 命令 ,初始化一个g ...
- linux 工具
zsh: ubuntu安装: sudo apt-get install zsh
- jetty切换tomcat中文乱码
项目中文在jetty下正常,换tomcat下出现乱码. 问题是web.xml中的encodingFilter不是第一个,要设置为第一个 <filter> <filter-name&g ...
- 最小生成树--克鲁斯卡尔算法(Kruskal)
按照惯例,接下来是本篇目录: $1 什么是最小生成树? $2 什么是克鲁斯卡尔算法? $3 克鲁斯卡尔算法的例题 摘要:本片讲的是最小生成树中的玄学算法--克鲁斯卡尔算法,然后就没有然后了. $1 什 ...