当前位置 : 主页 > 手机开发 > ROM >

单点登录前戏(未使用jwt版本)

来源:互联网 收集:自由互联 发布时间:2021-06-10
建表 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_nam

建表

分享图片
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=((0, ), (1, )), 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 = [email protected]#$%^&*     #根据公司自定制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(‘‘)
View Code

 

添加数据

分享图片
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
网友评论