某用戶同時擁有「A 區域管理員」(可增刪改查)與「B 區域普通用戶」(僅可查)兩種角色。頁面需合並顯示兩區域數據列表,且必須展示「修改」「刪除」按鈕,但實際操作時僅允許對 A 區域數據生效。
若根據最高權限顯示按鈕,卻在前端隱藏 B 區域行的操作圖標,會導致:
editable: true/false,前端據此置灰按鈕並禁用點擊,但絕不可省略後端校驗。@DeleteMapping("/data/{id}")
public Result delete(@PathVariable Long id) {
DataRecord record = dataMapper.selectById(id);
if (!permissionService.hasRegionAdminRole(currentUser(), record.getRegionId())) {
return Result.forbidden("無該區域管理權限");
}
dataMapper.deleteById(id);
return Result.ok();
}
「操作時校驗」是核心,「顯示時輔助」是優化。切勿將權限控制完全寄託於前端,後端攔截才是安全基石。