1. 程式人生 > >Sanic框架登入驗證——Sanic-Auth的使用方法

Sanic框架登入驗證——Sanic-Auth的使用方法

Sanic-Auth的使用方法

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

sanic_auth 這個模組需要安裝:

pip install --upgrade Sanic-Auth

示例

  • 現學現賣,歡迎一塊交流學習。
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)