项目地址: GitHub - bamboo-cms/bamboo: A CMS optimized for conference hosting
难度:复杂
- 实现用户认证功能:登录、登出
- 根据用户权限控制不同的访问限制
- 支持管理员对用户权限进行修改
项目地址: GitHub - bamboo-cms/bamboo: A CMS optimized for conference hosting
难度:复杂
我看了数据库原型,似乎只有一个用户多对一角色的权限结构,没有涉及到比较复杂的RBAC架构。
任务难度为什么会是复杂,不会有陷阱吧(
哈哈,没有陷阱。第三点我本来想的是前后端都要实现,现在看优先实现后端就好
只是确保你没有理解错误,用户——角色应该是多对一
权限结构已经做了简化,只分出了三个权限(不像django auth那样每个model对应CRUD四个权限)
但这里面要实现得「好用」还是需要一定的经验,我理想中应该是一个这样的装饰器
@require_auth(permission=MANAGE_CONTENT)
def do_something():
...
另外这个登录认证也要暴露给 openAPI spec,请 @greyli 确认下APIFlask是否支持
支持的,类似这样:
app.config['SPEC_DECORATORS'] = [app.auth_required(auth)]
app.config['DOCS_DECORATORS'] = [app.auth_required(auth)]
@Farmer-Chillax 上个 sprint 实现的功能
OK
另外这个功能需要实现SSO吗?如果不需要的话,我考虑使用单纯的JWT实现
对。主要是我不知道flask-httpauth符不符合我们的要求,所以直接链接到文档了
grey 正解
了然
我倾向于使用JWT来认证和鉴权,但是JWT签发后是无法撤回的(服务端不保存用户的登录状态)。在这方面有什么要求吗?
为啥要撤回呢?什么情况要撤回?比方说废弃了用户那服务端可以拒绝token。
如果是改了密码的情况确实取消不了登录状态,但我觉得这不是大问题。一般密码是只能本人改的,这样前端就可以主动清除登录态