cloudopt-plugin-auth 是一个轻量级的权限校验框架,对 restful 友好,支持通配符。插件将权限分为三个级别:组、角色、用户三个级别,默认通过 json 文件进行配置。你还可以自行继承 Auth 类实现自定义从数据库中获取或者从其它文件中获取。实现类可以参考 JsonAuth 这个类是如何实现的。

    在使用前请先自行引用相应的依赖,请自行添加版本号。

    1. <dependency>
    2. <groupId>net.cloudopt.next</groupId>
    3. <artifactId>cloudopt-next-auth</artifactId>
    4. </dependency>

    如果你使用的是默认的权限校验,可以直接在 application.json 中配置权限。

    1. {
    2. "auth": {
    3. "roles": [
    4. {
    5. "id": 1,
    6. "name": "operate",
    7. "rules": [
    8. {
    9. "name": "about account",
    10. "url": "/api/v1/account/*",
    11. "method": "GET",
    12. "allow": true
    13. }
    14. ]
    15. }
    16. ],
    17. "groups": [
    18. {
    19. "id": 1,
    20. "name": "login",
    21. "rules": [
    22. {
    23. "name": "about login",
    24. "url": "/api/v1/login",
    25. "method": "POST",
    26. "allow": true
    27. }
    28. ]
    29. }
    30. ],
    31. "users": [
    32. {
    33. "id": 1,
    34. "uniqueTag": "SHUH-OSJI-UHIN-UUHG",
    35. "rolesIdList": [
    36. 1
    37. ],
    38. "groupsIdList": [
    39. 1
    40. ],
    41. "rules": [
    42. {
    43. "name": "block add account",
    44. "url": "/api/v1/account/*",
    45. "method": "POST||DELETE",
    46. "allow": false
    47. }
    48. ]
    49. }
    50. ]
    51. }
    52. }

    使用时,你只需要传入请求的 url、 method、和用户的唯一标签(可以设置为用户在业务系统的唯一id,自行控制)即可。

    1. var authority: Auth = JsonAuth()
    2. authority.enforce(uniqueTag, "/api/v1/account/creat", "GET")
    3. authority.enforce(uniqueTag, "/api/v1/account/creat", "POST")
    4. authority.enforce(uniqueTag, "/api/v1/push", "POST")