Files
integral-shop/backend-adminend/src/utils/requestNoAuth.js
scott ee0886b800 feat: 新增积分外部页面(免认证三页 + 配套基础设施)
前端:
- 新增 EmptyLayout 空壳布局(无侧边栏/导航)
- 新增 requestNoAuth Axios 实例(不注入 token)
- 新增 integralExternal 路由模块(/integral-external/*)
- permission.js 加入 whiteListPrefixes 前缀白名单跳过登录
- 新增 phoneDesensitize 手机号脱敏过滤器
- 新增三个免认证页面:
  · 积分订单页(/integral-external/order)
  · 用户积分页(/integral-external/user,手机号脱敏)
  · 用户积分明细子页(/integral-external/user/integral-detail)

后端:
- 新增 ExternalIntegralController(无 @PreAuthorize)
  · GET  /api/external/integral/order/list
  · GET  /api/external/integral/user/list
  · POST /api/external/integral/log/list
- WebSecurityConfig 加入 /api/external/integral/** permitAll

文档与工具:
- 新增 coding plan、schedule、测试报告
- 新增 start-backend.sh / start-frontend.sh 本地启动脚本
- 新增 .mvn/wrapper/maven-wrapper.properties

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 10:41:30 +08:00

52 lines
1.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 免认证 Axios 实例
* 供积分外部页面(/integral-external/*)使用。
* 不注入 Authori-zation token不拦截 401 自动跳转登录页。
*/
import axios from 'axios';
import { Message } from 'element-ui';
import SettingMer from '@/utils/settingMer';
const service = axios.create({
baseURL: SettingMer.apiBaseURL,
timeout: 60000,
});
// 请求拦截器 — 不注入 token
service.interceptors.request.use(
(config) => {
// GET 请求防缓存
if (/get/i.test(config.method)) {
config.params = config.params || {};
config.params.temp = Date.parse(new Date()) / 1000;
}
return config;
},
(error) => Promise.reject(error),
);
// 响应拦截器 — 不拦截 401 跳转
service.interceptors.response.use(
(response) => {
const res = response.data;
if (res.code !== 0 && res.code !== 200) {
Message({
message: res.msg || res.message || '请求失败',
type: 'error',
duration: 5 * 1000,
});
return Promise.reject(new Error(res.msg || '请求失败'));
}
return res.data;
},
(error) => {
const msg = error.response
? `网络请求失败 (${error.response.status})`
: '网络连接失败,请检查服务器是否启动';
Message({ message: msg, type: 'error', duration: 5 * 1000 });
return Promise.reject(error);
},
);
export default service;