开发规范

开发模式登录与权限诊断

在开发环境中建立真实身份,定位登录与权限接入问题。

浏览全部手册
本页目录
文档来源与 Markdown 原文

权威正文:ineed-core/docs/project-development/development-login-guide.md。网站按工作区快照同步,原文中的历史日期和验证范围保留。

开始编码前核对同版本源码;跨仓文件引用可在源码定位目录查找。

下载 Markdown 原文 ↓

本文用于本地开发联调。开发模式仍然必须完成登录认证,它只改变方法级权限配置,不是免认证模式。

1. 开启开发模式

application.is-development 默认值为 false。仅在受控的本地配置中显式设置:

application:
  is-development: true

重启应用后再执行后续步骤。开发认证服务只在 application.is-development=true 时注册。

2. 准备本地输入

从团队批准的本地配置或 secret store 取得联调值,在当前 shell 设置以下变量。不要把值写进源码、文档、命令历史或 evidence:

: "${INEED_DEV_BASE_URL:?set from local environment}"
: "${INEED_DEV_USER_TYPE:?set from approved local configuration}"
: "${INEED_DEV_USER_ACCOUNT:?set from secret store}"
: "${INEED_DEV_PASSWORD:?set from secret store}"

INEED_DEV_BASE_URL 不包含末尾 /INEED_DEV_TOKEN 将从登录响应在本地生成,不应预先设置或持久化。

3. 登录

请求体字段由 LoginAO 定义为 identityTypeaccountpassword

LOGIN_RESPONSE_FILE="$(mktemp)"
chmod 600 "${LOGIN_RESPONSE_FILE}"
curl --fail-with-body --silent --show-error \
  --request POST \
  --header 'Content-Type: application/json' \
  --data "$(jq -n \
    --arg identityType "${INEED_DEV_USER_TYPE}" \
    --arg account "${INEED_DEV_USER_ACCOUNT}" \
    --arg password "${INEED_DEV_PASSWORD}" \
    '{"identityType": $identityType, "account": $account, "password": $password}')" \
  "${INEED_DEV_BASE_URL}/api/security/authentication/login" \
  >"${LOGIN_RESPONSE_FILE}"

INEED_DEV_TOKEN="$(jq -er '.data.authenticationToken.token' "${LOGIN_RESPONSE_FILE}")"
rm -f "${LOGIN_RESPONSE_FILE}"
export INEED_DEV_TOKEN

不要打印、复制到工单或提交 INEED_DEV_TOKEN。命令失败时先删除临时响应文件,再检查本地配置。

4. 诊断身份与权限

以下请求仍经过正常的 URL 安全过滤器、令牌和会话校验:

curl --fail-with-body --silent --show-error \
  --header "Authorization: Bearer ${INEED_DEV_TOKEN}" \
  "${INEED_DEV_BASE_URL}/api/security/authentication/who"

curl --fail-with-body --silent --show-error \
  --header "Authorization: Bearer ${INEED_DEV_TOKEN}" \
  "${INEED_DEV_BASE_URL}/api/security/authentication/permission"

curl --fail-with-body --silent --show-error \
  --request PUT \
  --header "Authorization: Bearer ${INEED_DEV_TOKEN}" \
  "${INEED_DEV_BASE_URL}/api/security/authentication/permission/refresh"

5. 安全边界

  • 开发模式仍然必须完成登录认证。
  • application.is-development=true 仅关闭 Method Security,即方法上的权限注解不参与拦截。
  • URL 安全过滤器仍然生效,不能把未授权路径视为公开路径。
  • 会话校验仍然生效,令牌失效或会话被移除后请求应失败。
  • 租户边界仍然生效,不能跨租户读取或修改数据。
  • 开发模式不会关闭其他 WebMvc/WebFlux 安全过滤、密码处理或审计边界。

6. 恢复正常模式

  1. 清理当前 shell 中的凭据和令牌:

    unset INEED_DEV_USER_TYPE INEED_DEV_USER_ACCOUNT INEED_DEV_PASSWORD INEED_DEV_TOKEN
  2. 将本地配置恢复为 application.is-development=false,或删除该配置以使用默认值。

  3. 重启应用。

  4. 确认 development service 不再注册。

  5. 使用正常身份确认方法级权限检查恢复,并确认未授权请求被拒绝。

仍有疑问?按反馈清单整理复现信息 →