Sanic框架登入驗證——Sanic-Auth的使用方法
阿新 • • 發佈:2018-11-22
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)