27
27
<p align =" center " >
28
28
<a href =" https://github.com/amisadmin/fastapi_user_auth " target =" _blank " >源码</a >
29
29
·
30
- <a href =" http://demo.amis.work/admin " target =" _blank " >在线演示</a >
30
+ <a href =" http://user-auth. demo.amis.work/ " target =" _blank " >在线演示</a >
31
31
·
32
32
<a href =" http://docs.amis.work " target =" _blank " >文档</a >
33
33
·
36
36
37
37
------
38
38
39
- ` FastAPI-User-Auth ` 是一个基于 [ FastAPI-Amis-Admin] ( https://github.com/amisadmin/fastapi_amis_admin ) 的应用插件,与` FastAPI-Amis-Admin ` 深度结合,为其提供用户认证与授权.
40
-
41
-
39
+ ` FastAPI-User-Auth ` 是一个基于 [ FastAPI-Amis-Admin] ( https://github.com/amisadmin/fastapi_amis_admin )
40
+ 的应用插件,与` FastAPI-Amis-Admin ` 深度结合,为其提供用户认证与授权.
42
41
43
42
## 安装
44
43
@@ -63,6 +62,7 @@ auth = site.auth
63
62
# 挂载后台管理系统
64
63
site.mount_app(app)
65
64
65
+
66
66
# 创建初始化数据库表
67
67
@app.on_event (" startup" )
68
68
async def startup ():
@@ -71,14 +71,17 @@ async def startup():
71
71
await auth.create_role_user(' admin' )
72
72
await auth.create_role_user(' vip' )
73
73
74
+
74
75
# 要求: 用户必须登录
75
76
@app.get (" /auth/get_user" )
76
77
@auth.requires ()
77
78
def get_user (request : Request):
78
79
return request.user
79
80
81
+
80
82
if __name__ == ' __main__' :
81
83
import uvicorn
84
+
82
85
uvicorn.run(app, debug = True )
83
86
84
87
```
@@ -194,13 +197,15 @@ auth.backend.attach_middleware(app)
194
197
``` python
195
198
from fastapi_user_auth.auth.models import User
196
199
197
- async def get_request_user (request : Request)->Optional[User]:
200
+
201
+ async def get_request_user (request : Request) -> Optional[User]:
198
202
if await auth.requires(' admin' , response = False )(request):
199
203
return request.user
200
204
else :
201
205
return None
202
206
203
207
```
208
+
204
209
## Token存储后端
205
210
206
211
` fastapi-user-auth ` 支持多种token存储方式.默认为: ` DbTokenStore ` , 建议自定义修改为: ` JwtTokenStore `
@@ -211,6 +216,7 @@ async def get_request_user(request: Request)->Optional[User]:
211
216
from fastapi_user_auth.auth.backends.jwt import JwtTokenStore
212
217
from sqlalchemy.ext.asyncio import create_async_engine
213
218
from fastapi_amis_admin.utils.db import SqlalchemyAsyncClient
219
+
214
220
# 创建异步数据库引擎
215
221
engine = create_async_engine(url = ' sqlite+aiosqlite:///admisadmin.db' , future = True )
216
222
# 使用`JwtTokenStore`创建auth对象
@@ -228,6 +234,7 @@ site = AuthAdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///a
228
234
``` python
229
235
# 使用`DbTokenStore`创建auth对象
230
236
from fastapi_user_auth.auth.backends.db import DbTokenStore
237
+
231
238
auth = Auth(db = SqlalchemyAsyncClient(engine),
232
239
token_store = DbTokenStore(db = SqlalchemyAsyncClient(engine)))
233
240
```
@@ -238,6 +245,7 @@ auth = Auth(db=SqlalchemyAsyncClient(engine),
238
245
# 使用`RedisTokenStore`创建auth对象
239
246
from fastapi_user_auth.auth.backends.redis import RedisTokenStore
240
247
from aioredis import Redis
248
+
241
249
auth = Auth(db = SqlalchemyAsyncClient(engine),
242
250
token_store = RedisTokenStore(redis = Redis.from_url(' redis://localhost?db=0' )))
243
251
```
@@ -256,30 +264,26 @@ flowchart LR
256
264
Role -. m:n .-> Perimission
257
265
```
258
266
259
-
260
-
261
-
262
267
## 界面预览
263
268
264
269
- Open ` http://127.0.0.1:8000/admin/auth/form/login ` in your browser:
265
270
266
- ![ Login] ( https://raw.githubusercontent.com/amisadmin/fastapi_amis_admin_demo/master/upload/img/fastapi-user-auth-login .png )
271
+ ![ Login] ( https://s2.loli.net/2022/03/20/SZy6sjaVlBT8gin .png )
267
272
268
273
- Open ` http://127.0.0.1:8000/admin/ ` in your browser:
269
274
270
- ![ Admin ] ( https://raw.githubusercontent.com/amisadmin/fastapi_amis_admin_demo/master/upload/img/fastapi-user-auth-admin .png )
275
+ ![ ModelAdmin ] ( https://s2.loli.net/2022/03/20/ItgFYGUONm1jCz5 .png )
271
276
272
277
- Open ` http://127.0.0.1:8000/admin/docs ` in your browser:
273
278
274
- ![ Docs] ( https://raw.githubusercontent.com/amisadmin/fastapi_amis_admin_demo/master/upload/img/fastapi-user-auth-docs .png )
279
+ ![ Docs] ( https://s2.loli.net/2022/03/20/1GcCiPdmXayxrbH .png )
275
280
276
281
## 未来计划
277
282
278
283
- [ ] bug修复,细节完善.
279
284
- [ ] 完善用户教程文档.
280
285
- [ ] 不断拓展与完善核心功能.
281
286
282
-
283
287
## 许可协议
284
288
285
289
- ` fastapi-amis-admin ` 基于` Apache2.0 ` 开源免费使用,可以免费用于商业用途,但请在展示界面中明确显示关于FastAPI-Amis-Admin的版权信息.
0 commit comments