当前位置:   article > 正文

Sanic框架登录验证——Sanic-Auth的使用方法_sanic登录系统

sanic登录系统

Sanic框架简介

Sanic 是一个和类Flask 的基于Python3.5+的web框架。
这个框架只支持Python3.5及已上版本,具体的介绍请自行百度,比我写的详细多了。

Sanic-Auth的使用方法

Sanic框架很轻量级,但是模块还是很丰富的。但是,现在Sanic框架的学习资源还比较少,直接拿来做生产还是需要一定勇气的。

导入模块

# 导入权限验证模块
from sanic_auth import Auth, User

from sanic import Sanic, response
from sanic.response import text, json
import pymysql
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

sanic_auth 这个模块需要安装:

pip install --upgrade Sanic-Auth
  • 1

示例

  • 现学现卖,欢迎一块交流学习。
from sanic_auth import Auth, User
from sanic import Sanic, response
from sanic.response import text, json
import pymysql

app = Sanic(__name__)
app.config.AUTH_LOGIN_ENDPOINT = 'login'

auth = Auth(app)

db = pymysql.connect(host='localhost',
                     user='username',
                     passwd='password',
                     database='database_name',
                     charset="utf8")
# session字典
session = {}

# 存入session
@app.middleware('request')
async def add_session(request):
    request['session'] = session

auth = Auth(app)

# 定义登录函数
@app.route('/login', methods=['GET', 'POST'])
async def login(request):
    message = ''
    if request.method == 'POST':
        cursor = db.cursor()
        username = request.form.get('username')
        password = request.form.get('password')
        sql = "SELECT userid, password FROM database_name.user WHERE username='" + username + "'"
        try:
            cursor.execute(sql)
            results = cursor.fetchone()
            if password == results[1]:
                user = User(id=results[0], name=username)
                auth.login_user(request, user)
                return response.redirect('/profile')
        except:
            return text('帐号或密码错误,回去吧!')

    elif request.method == 'GET':
        return await response.file('./login.html')

# 调用内置的登出函数,清除session
@app.route('/logout')
@auth.login_required
async def logout(request):
    auth.logout_user(request)
    return response.redirect('/login')


@app.route('/profile')
@auth.login_required(user_keyword='user')
async def profile(request, user):
    return response.json({'user': user})


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000, debug=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号