Laravel与GraphQL有个约会(八)-GraphQL权限认证问题
背景:
用户权限认证在一些安全性要求比较高的多用户系统中有很大一部分权重。因为项目近期可能要用上这些知识。在此整理一下如何使用GraphQL实现权限认证。
术语介绍:
credits(信用凭证)
用户名和密码
authenticated(认证)
使用信用凭证验证自己的身份就是认证
authorize(授权)
去网吧上网需要年满18岁,通过你的身份信息证明你有这个资格上网。
一.使用GraphQL中的Schema
graphql.php配置文件中,在schemas数组中中可以定义多个名称空间, 如果您想要一个普通用户的的入口,另一个需要超级管理员身份的入口,那么拥有多个schemas是非常有用的,如上图default与admin。在定义完schemas之后,可以根据不同名称空间在middleware_schema中指定中间件。我们可以通过中间件校验用户的信息。具体的访问方式如下:
如果不是使用默认的schemas名称空间,那么在访问graphql时,url中需要加上该schemas的名字。如上图中的admin.
二.使用authorize()方法做权限认证
如果没有权限返回false,则像下图一样:
根据这个特性,我们可以在authorize()验证当前用户的身份信息,来决定是否能继续访问。
以此为基础在加上JWT的Token认证系统的安全性又可以提高一个等级。
参考文档:
写下、记下、留下