# oj-system **Repository Path**: liuyang725/oj-system ## Basic Information - **Project Name**: oj-system - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-23 - **Last Updated**: 2024-04-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # oj-system #### 介绍 {**以下是 Gitee 平台说明,您可以替换此简介** Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} #### 软件架构 软件架构说明 #### IDEA配置代码格式问题 ![img.png](oj-front/public/配置node目录.png) ![img_1.png](oj-front/public/配置Prettier代码格式化工具.png) ![img_2.png](oj-front/public/配置esLint识别配置.png) ### 前端 #### 代码编辑器 https://microsoft.github.io/monaco-editor/ #### Markdown编辑器 https://bytemd.js.org/ #### OpenAPI 自动生成 #### TypeScript里面?含义 1. {name: string, password: string,age?: number}:对象赋值时,其中age为可有可无 2. (name: string, password: string,age?: number):传递参数时,只传两个参数也能调用 3. obj?.a?.b:如果obj.a.b存在,则返回obj.a.b,否则返回undefined,不会抛出异常 4. x??y, 如果x存在,则返回x,否则返回y,类似||运算,但是只有x为null或者undefined时才会返回y #### ref()函数 1. ref()函数返回一个响应式数据,可以修改响应式数据,但是不能直接赋值,只能通过.value赋值 #### script标签中的setup 1. ``语法糖,可以简化模板中的代码。 ### 后端 #### SpringSecurity流程 采用的责任链模式,一层一层的过滤器 1. 用户发起请求,请求携带token 2. OncePerRequestFilter过滤器校验Token存在,有就直接校验令牌有效期登录或者刷新token令牌登录,否则跳转到登录页输入账号密码登录 3. 创建UsernamePasswordAuthenticationToken认证令牌对象,账号密码 4. 提交到AuthenticationManager认证管理器,AuthenticationProvider的具体实现进行认证 5. 通过数据库UserDetailService认证,查询用户信息,比对密码,生成UserDetail对象,返回给AuthenticationManager 6. 把对象存入SecurityContextHolder上下文中,方便后续使用 7. 写SpringSecurity配置时需要开启cors跨域,否则跨域请求会报错 - 登录成功处理器 - 登录失败处理器 #### bigint=>Long=>前端精度问题 1. 修改JSON序列化,写一个ObjectMapper的Bean,从SpringWeb模块里面JackJSON里面build获取ObjectMapper 2. 创建一个简单模块SimpleModule,添加针对Long类型的序列化器,ToStringSerializer 3. 再把模块注入到ObjectMapper #### 自动生成前端API调用 >npx openapi --input http://localhost:8989/cloud-oj/v2/api-docs --output ./generated --client axios