单点登录前戏(未使用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,系统管理员只需维 ...
随机推荐
- Flask 构建微电影视频网站(七)
电影模块实现 上映预告 @home.route("/animation/") def animation(): """ 首页轮播动画 "&q ...
- python学习日记(包——package)
简述——包 包是一种通过使用‘.模块名’来组织python模块名称空间的方式. 注意: 1. 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都 ...
- Spring Boot 集成 Spring Security 实现权限认证模块
作者:王帅@CodeSheep 写在前面 关于 Spring Security Web系统的认证和权限模块也算是一个系统的基础设施了,几乎任何的互联网服务都会涉及到这方面的要求.在Java EE领 ...
- java web 三大组件
JavaWeb三大组件 Servlet,Filter,Listener. Servlet Servlet的作用 在Java web b/s架构中,servlet扮演了重要的角色,作为一个中转处理的容器 ...
- 反射与jvm
- es6异步编程
https://blog.csdn.net/tcy83/article/details/80274772 等一系列文章
- CMakeList.txt(3): 一个cmake实例
介绍一个比较实用的例子,即包含生成静态库又包含引入外部头文件和链接库的cmake demo. 先按照工程规范建立工程目录,并编写代码,以下面的工程目录为例进行解释这个例子,工程的目录结构为: 1. 编 ...
- 《Java》第八周学习总结
第八周学习内容:课本第15章节的内容泛型与集合框架 主要内容有 -泛型-链表-堆栈-散列映射-树集-树映射 重点和难点-重点:泛型和集合的使用码云:https://gitee.com/ShengHu ...
- [转载]如何在ubuntu上使用github
来源:https://blog.csdn.net/tina_ttl/article/details/51326684 https://blog.csdn.net/u013551462/article/ ...
- 前端开发IDE VSCode + live preview
live preview 为方便web开发者,编写网页静态代码,不用频繁切换到浏览器去查看的贴心功能. 可以在编辑器中,就实现编辑预览功能, 边编写代码,边查看预览效果. 与vscode相对应的其他两 ...