Skip to content

权限系统

修仙世界服务端采用 RBAC(基于角色的访问控制)模型进行权限管理。

权限模型

用户 - 角色 - 权限关系

用户 (Player)
    └── 关联 ──→ 角色 (Role)
                    └── 包含 ──→ 权限 (Permission)

权限等级

等级角色说明
0guest游客,未登录用户
1player普通玩家
2vipVIP 玩家
3moderator版主,可管理聊天和部分功能
4admin管理员,拥有全部权限
5owner所有者,最高权限

权限列表

玩家权限

权限标识说明默认角色
game.player.create创建角色player
game.player.info查看自己的信息player
game.player.update修改自己的信息player
game.cultivation.start开始修炼player
game.cultivation.stop停止修炼player
game.breakthrough突破境界player
game.exploration游历探索player
game.secret_realm.enter进入秘境player
game.item.use使用物品player
game.equipment.equip装备物品player
game.equipment.enhance强化装备player
game.skill.learn学习技能player
game.technique.learn学习功法player
game.crafting.craft制造物品player
game.market.list上架物品player
game.market.buy购买物品player
game.friend.add添加好友player
game.friend.remove删除好友player
game.chat.world世界聊天player
game.chat.private私聊player
game.pvp.challengePVP挑战player
game.title.equip装备称号player
game.team.create创建队伍player
game.team.join加入队伍player
game.sect.create创建宗门player
game.sect.join加入宗门player

VIP 权限

权限标识说明
game.vip.bonus获取VIP加成
game.vip.skip_cooldown跳过冷却时间
game.vip.double_reward双倍奖励

版主权限

权限标识说明
admin.chat.mute禁言玩家
admin.chat.kick踢出频道
admin.chat.clear清理聊天记录
admin.report.handle处理举报
admin.player.warn警告玩家

管理员权限

权限标识说明
admin.player.view查看玩家信息
admin.player.ban封禁玩家
admin.player.unban解封玩家
admin.player.reset重置玩家数据
admin.server.shutdown关闭服务器
admin.server.reload重新加载配置
admin.economy.add添加灵石
admin.economy.set修改灵石
admin.item.give给予物品
admin.player.setattr修改属性
admin.player.setrealm修改境界
admin.broadcast发送广播
admin.online.view查看在线列表
admin.qq.bind绑定QQ
admin.qq.unbind解绑QQ
admin.sect.disband解散宗门
admin.sect.war强制宗门战

所有者权限

权限标识说明
admin.*所有管理员权限
system.*所有系统权限
plugin.*所有插件权限

API 接口

获取当前权限

GET /auth/permissions

响应示例:

json
{
  "success": true,
  "data": {
    "role": "player",
    "permissions": [
      "game.player.create",
      "game.player.info",
      "game.cultivation.start"
    ]
  }
}

检查权限

GET /auth/check?permission=game.player.create

响应示例:

json
{
  "success": true,
  "data": {
    "permission": "game.player.create",
    "granted": true
  }
}

管理员接口

获取所有角色

GET /admin/roles

获取角色权限

GET /admin/roles/{roleName}/permissions

修改角色权限

POST /admin/roles/{roleName}/permissions

请求体:

json
{
  "permissions": ["game.player.create", "game.player.info"]
}

设置玩家角色

POST /admin/players/{playerId}/role

请求体:

json
{
  "role": "vip"
}

权限检查机制

在代码中检查权限

java
@PreAuthorize("hasPermission('game.player.create')")
@PostMapping("/game/player/create")
public ApiResponse createPlayer() {
    // 只有拥有 game.player.create 权限的用户才能访问
    return gameApi.createPlayer();
}

自定义权限注解

java
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasRole('admin')")
public @interface AdminOnly {
}

权限配置

权限配置文件位于 config/permissions.yml

yaml
roles:
  player:
    level: 1
    permissions:
      - game.player.create
      - game.player.info
      - game.cultivation.start
      - game.cultivation.stop
      - game.breakthrough
      - game.exploration
      - game.item.use
      - game.equipment.equip
      - game.market.list
      - game.market.buy
      - game.friend.add
      - game.friend.remove
      - game.chat.world
      - game.chat.private
      - game.pvp.challenge
  
  vip:
    level: 2
    inherit: player
    permissions:
      - game.vip.bonus
      - game.vip.skip_cooldown
      - game.vip.double_reward
  
  admin:
    level: 4
    permissions:
      - admin.player.view
      - admin.player.ban
      - admin.player.unban
      - admin.server.shutdown
      - admin.economy.add
      - admin.item.give
      - admin.broadcast

注意事项

  1. 权限继承:高等级角色自动继承低等级角色的权限
  2. 权限校验:所有敏感操作必须进行权限校验
  3. 最小权限原则:只授予必要的最小权限
  4. 日志记录:所有权限变更操作都会记录日志
  5. 权限缓存:权限信息会缓存在 Redis 中,变更后需要刷新缓存

修仙世界 © 2026