使用 Flask 和 rauth 进行 Github Oauth 登陆
admin
2023-07-31 00:38:16
0

最近我研究了一下Flask的OAuth库。情况并不乐观,大部分的包都已过时并且不再被支持了。大家熟知的Flask-Oauth基本上已经被废弃了,我也不推荐依赖这个库。有趣的是OAuth本身其实是很简单的,认证之后你会得到一个访问token,你只需将其作为GET参数或者作为request的特殊的header即可。也许其他的OAuth提供者需要更复杂的逻辑,但是Github仅此就足够。

我在StackOverflow上请教了如何解决Flask-OAuth的问题 ,从rauth的作者那里得到回答,他建议试一下他写的库。本文就是对他及开源社区的回报。我写了这个真实的例子,告诉你如何使用Flask、rauth、Github和会话来对你的站点的用户进行认证。

首先你需要设置好本地的环境。你需要安装好python、pip和virtualenv。接下来对环境进行设置:

123 $ virtualenv venv$ source venv/bin/activate (venv)$ pip install rauth Flask FlaskSQLAlchemy

如果要运行我的例子,你还需要安装Sqlite的python绑定,SQLAlchemy会需要它:

1 (venv)$ pip install pysqlite

pip会安装所有需要的依赖,所以你的环境已经就绪了。

现在你需要到Github设置页面里找到 Applications sections,为你设置好一个新的应用。下图显示了在我的配置区域。

image

 

下面是代码,主模块如下:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 # github.pyfrom flask import (Flask, flash, request, redirect,    render_template, url_for, session)from flask.ext.sqlalchemy import SQLAlchemy from rauth.service import OAuth2Service # Flask configSQLALCHEMY_DATABASE_URI = \’sqlite:///github.db\’SECRET_KEY = \’\\xfb\\x12\\xdf\\xa1@i\\xd6>V\\xc0\\xbb\\x8fp\\x16#Z\\x0b\\x81\\xeb\\x16\’DEBUG = True # Flask setupapp = Flask(__name__)app.config.from_object(__name__)db = SQLAlchemy(app) # Use your own values in your real application github = OAuth2Service(    name=\’github\’,    base_url=\’https://api.github.com/\’,    access_token_url=\’https://github.com/login/oauth/access_token\’,    authorize_url=\’https://github.com/login/oauth/authorize\’,    client_id= \’477151a6a9a9a25853de\’,    client_secret= \’23b97cc6de3bea712fddbef70a5f5780517449e4\’,) # modelsclass User(db.Model):    id = db.Column(db.Integer, primary_key=True)    login = db.Column(db.String(80), unique=True)    name = db.Column(db.String(120))     def __init__(self, login, name):        self.login = login        self.name = name     def __repr__name = name     def __repr__Ψ荐依赖这个库。有趣的是OAuth本身其实是很简单的,认证之后你会得到一个访问token,你只需将其作为GET参数或者作为request的特殊的header即可。也许其他的OAuth提供者需要更复杂的逻辑,但是Github仅此就足够。

我在StackOverflow上请教了如何解决Flask-OAuth的问题 ,从rauth的作者那里得到回答,他建议试一下他写的库。本文就是对他及开源社区的回报。我写了这个真实的例子,告诉你如何使用Flask、rauth、Github和会话来对你的站点的用户进行认证。

首先你需要设置好本地的环境。你需要安装好python、pip和virtualenv。接下来对环境进行设置:

123 $ virtualenv venv$ source venv/bin/activate (venv)$ pip install rauth Flask FlaskSQLAlchemy

如果要运行我的例子,你还需要安装Sqlite的python绑定,SQLAlchemy会需要它:

1 (venv)$ pip install pysqlite

pip会安装所有需要的依赖,所以你的环境已经就绪了。

现在你需要到Github设置页面里找到 Applications sections,为你设置好一个新的应用。下图显示了在我的配置区域。

image

 

下面是代码,主模块如下:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 # github.pyfrom flask import (Flask, flash, request, redirect,    render_template, url_for, session)from flask.ext.sqlalchemy import SQLAlchemy from rauth.service import OAuth2Service # Flask configSQLALCHEMY_DATABASE_URI = \’sqlite:///github.db\’SECRET_KEY = \’\\xfb\\x12\\xdf\\xa1@i\\xd6>V\\xc0\\xbb\\x8fp\\x16#Z\\x0b\\x81\\xeb\\x16\’DEBUG = True # Flask setupapp = Flask(__name__)app.config.from_object(__name__)db = SQLAlchemy(app) # Use your own values in your real application github = OAuth2Service(    name=\’github\’,    base_url=\’https://api.github.com/\’,    access_token_url=\’https://github.com/login/oauth/access_token\’,    authorize_url=\’https://github.com/login/oauth/authorize\’,    client_id= \’477151a6a9a9a25853de\’,    client_secret= \’23b97cc6de3bea712fddbef70a5f5780517449e4\’,) # modelsclass User(db.Model):    id = db.Column(db.Integer, primary_key=True)    login = db.Column(db.String(80), unique=True)    name = db.Column(db.String(120))     def __init__(self, login, name):        self.login = login        self

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python查找阿姆斯特朗数 题目解释 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...