<!-- generated-by: gsd-doc-writer -->
# 身份与权限接入

规则 `CORE-AUTH-001`。Core 提供 Web、上下文和通用契约；身份认证、会话存储、授权与数据范围由安全模块和应用装配实现。

## 接入顺序

1. 在需求中区分后台维护、用户本人操作、公共读取等 API 面，定义主体和数据范围。
2. 选择应用的认证、会话和授权模块，确认 Controller 所依赖的授权 Bean 与安全链已装配。
3. 为标准能力和自定义动作维护稳定 resource key、权限清单和 Controller 授权表达式。
4. 将可信操作用户和目标租户传入业务链路，按[租户规则](tenant-and-context.md)保护数据访问。
5. 使用真实身份分别验证允许、拒绝、跨租户和范围外数据。

方法上出现 `@PreAuthorize` 仍需方法安全配置才能生效；一个普通 `new Controller(...)` 的单元测试不会自动执行 Spring 安全拦截。权限清单存在也不能证明实际 HTTP 已受保护。

## 正式契约与样例

当前会话采用服务端 `SecuritySession`；JWT 是传输凭据，不能由前端解析 token 来决定身份/权限。共享认证/授权桥接及契约落点见[分层指南](../project-development/custom-business-layering-guide.md)；登录与诊断见[开发登录指南](../project-development/development-login-guide.md)。

真实 Controller 样例：[CategoryDefinitionController](../../../ineed-modules/ineed-config/ineed-config-category/ineed-config-category-webmvc/src/main/java/com/ineed/config/category/controller/CategoryDefinitionController.java)。可以核对资源授权表达式、自定义接口与标准 trait 的组合，但新模块应使用自己的资源 key。

前端按钮权限只是展示控制；后端 API 必须独立校验。读取分配列表与保存分配结果是否属于一个授权动作，由业务语义确定，避免机械生成多余权限点。

## 验证

至少检查：未登录、无权限、有权限、同租户但数据范围外、其他租户。验证实际响应与数据未被修改，不只断言权限表达式字符串。

开发模式用于本地诊断，不作为生产认证方案。具体会话 Redis 和启动参数以[开发应用](../../../ineed-projects/ineed-dev/README.md)及所属安全模块为准。
