日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python注册系统_Python制作简易注册登录系统

發布時間:2024/7/23 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python注册系统_Python制作简易注册登录系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python制作簡易注冊登錄系統

這篇文章主要為大家詳細介紹了 Python 簡易注冊登錄系統的制作方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Python 是一種面向對象、解釋型計算機程序設計語言,由 Guido van Rossum 于 1989 年底發明,第一個公開發行版發行于 1991 年。Python 語法簡潔而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,它能夠把用其他語言制作的各種模塊(尤其是 C/C++)很輕松地聯結在一起。

這次我主要講解如何用 Python 基于 Flask 的登錄和注冊, 驗證方式采用 Basic Auth

主要用以下庫importos

#Flask的基礎庫

fromflaskimportFlask,abort,request,jsonify,g,url_for

#Flaks的數據庫操作的庫

fromflask.ext.sqlalchemyimportSQLAlchemy

#Flask登錄注冊的庫

fromflask.ext.httpauthimportHTTPBasicAuth

#加密解密密碼的庫

frompasslib.appsimportcustom_app_contextaspwd_context

#URL安全序列化工具

fromitsdangerousimport(TimedJSONwebSignatureSerializer

asSerializer,BadSignature,SignatureExpired)

首先當然是初始化app=Flask(__name__)

# 設置密鑰

app.config['SECRET_KEY']='the quick brown fox jumps over the lazy dog'

# 數據庫的配置

app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///db.sqlite'

app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True

#數據庫初始化

db=SQLAlchemy(app)

# 驗證的初始化

auth=HTTPBasicAuth()

然后是建模

SQLAlchemy 是 ORM 模型操作數據庫的,所以是非常的方便

除了基本的屬性之后我們我定義了一些必要的方法classUser(db.Model):

__tablename__='users'

id=db.Column(db.Integer,primary_key=True)

username=db.Column(db.String(32),index=True)

password_hash=db.Column(db.String(64))

# 加密密碼

defhash_password(self,password):

self.password_hash=pwd_context.encrypt(password)

# 驗證密碼

defverify_password(self,password):

returnpwd_context.verify(password,self.password_hash)

# 生成token,并設置過期時間

defgenerate_auth_token(self,expiration=600):

s=Serializer(app.config['SECRET_KEY'],expires_in=expiration)

returns.dumps({'id':self.id})

# 靜態的驗證token的方法

@staticmethod

defverify_auth_token(token):

s=Serializer(app.config['SECRET_KEY'])

try:

data=s.loads(token)

exceptSignatureExpired:

returnNone# token過期

exceptBadSignature:

returnNone# token無效

user=User.query.get(data['id'])

returnuser

注冊功能@app.route('/api/users',methods=['POST'])

defnew_user():

username=request.json.get('username')

password=request.json.get('password')

ifusernameisNoneorpasswordisNone:

abort(400)# 用戶名或者密碼為空

ifUser.query.filter_by(username=username).first()isnotNone:

abort(400)# 用戶已存在

user=User(username=username)

# 加密密碼

user.hash_password(password)

# 保存進數據庫

db.session.add(user)

db.session.commit()

# 成功注冊后返回用戶名,Location后面接著的是跳轉的地址

return(jsonify({'username':user.username}),201,

{'Location':url_for('get_user',id=user.id,_external=True)})

登錄功能# 登錄后獲取token

@app.route('/api/token')

@auth.login_required

defget_auth_token():

# 設置token過期時間

token=g.user.generate_auth_token(600)

returnjsonify({'token':token.decode('ascii'),'duration':600})

獲取 token 后之后,每次請求只需傳 token 就好了

我們可以通過一個方法驗證 token 是否有效# 可以通過token或者賬號密碼登錄

@app.route('/api/resource')

@auth.login_required

defget_resource():

# 如果token有效的話就返回username

returnjsonify({'data':'Hello, %s!'%g.user.username})

細心的人會發現上面這兩個方法前都帶有 @auth.login_required,這其實就是奧妙之處# 有@auth.login_required標志的都要調用這個方法,傳token或者傳賬號和密碼

@auth.verify_password

defverify_password(username_or_token,password):

# 首先驗證token

user=User.verify_auth_token(username_or_token)

ifnotuser:

# 然后再驗證用戶名和密碼

user=User.query.filter_by(username=username_or_token).first()

ifnotuserornotuser.verify_password(password):

returnFalse

g.user=user

returnTrue

最后寫一個入口方法if__name__=='__main__':

# 如果這個數據庫不存在就創建

ifnotos.path.exists('db.sqlite'):

db.create_all()

app.run(debug=True)

這樣就大功告成了

效果圖

注冊

登錄

驗證 token

來源: http://www.phperz.com/article/17/0320/315072.html

總結

以上是生活随笔為你收集整理的python注册系统_Python制作简易注册登录系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。