开发模式登录与权限诊断
在开发环境中建立真实身份,定位登录与权限接入问题。
浏览全部手册
本页目录
文档来源与 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 定义为 identityType、account 和 password:
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. 恢复正常模式
-
清理当前 shell 中的凭据和令牌:
unset INEED_DEV_USER_TYPE INEED_DEV_USER_ACCOUNT INEED_DEV_PASSWORD INEED_DEV_TOKEN -
将本地配置恢复为
application.is-development=false,或删除该配置以使用默认值。 -
重启应用。
-
确认 development service 不再注册。
-
使用正常身份确认方法级权限检查恢复,并确认未授权请求被拒绝。
仍有疑问?按反馈清单整理复现信息 →