首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  PHP

Restful API 如何做权限控制

  •  
  •   jimzhong · 2017-04-06 16:55:23 +08:00 · 2780 次点击
    这是一个创建于 650 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近用 lumen 做一个留学机构的网站后端。打算用基于权限的访问控制,请问有没有比较好的解决方案。

    第 1 条附言  ·  2017-04-07 09:48:26 +08:00
    已经使用 access-token 搞定了 Authentication
    6 回复  |  直到 2017-04-07 10:42:23 +08:00
        1
    colatin   2017-04-06 16:59:42 +08:00
    jwt
        2
    sirgod   2017-04-06 17:00:53 +08:00
    如果是给人用的页面就 cookie ,如果是供服务器调用的接口就 api key + secret key
        3
    rokeyzki   2017-04-06 17:16:16 +08:00   ♥ 2
    一句话: Authentication + Authorization

    首先是身份认证,使用 JWT 规范生成的 token ,搭配中间层做请求( api key + secret key ),不过要注意,尽可能不要使用 cookie 存储 token ,注意防范 CSRF 攻击。

    然后就是访问授权,通过访问控制列表,将 User 分类到不同的 Role 来管理,有对应权限的 Role 才可以执行对应的操作。
        4
    peablog   2017-04-06 21:21:36 +08:00
    也可以考虑在网关鉴权,比如 getkong.org
        5
    jimzhong   2017-04-07 09:47:28 +08:00
    @rokeyzki 感谢指点。 Authentication 已经搞定了。对 Authorization 有一些疑问。

    我想按照 RBAC 方式,一个用户有多个 role ,每个 role 有多个权限。那么这样以来用户,角色,权限各需要一张表,连接用户和角色,角色和权限各需要一张表,一共需要 5 张表,感觉有些麻烦。

    对于权限比较少的请情况,我能否把不同操作的权限 hardcode 在代码中呢?
        6
    rokeyzki   2017-04-07 10:42:23 +08:00   ♥ 1
    @jimzhong 如果权限确实比较少,可以考虑用 ACL 机制,不用 RBAC 机制,去掉角色,也减少了表的数量。

    两种机制都有利弊,需要自己根据实际业务场景去权衡,但是有一点可以确定,团队开发中,一定要尽可能避免 hardcode
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1002 人在线   最高记录 4236   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.2 · 23ms · UTC 19:07 · PVG 03:07 · LAX 11:07 · JFK 14:07
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1