onethink源码success 和error 无法跳转链接

本文记录了作者使用Onethink进行二次开发时遇到的一个登陆问题:在Windows服务器上部署后,即使用户名和密码正确也无法登陆后台。通过检查发现是由于文件头部存在BOM导致的,移除BOM后问题解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做了onethink 的二次开发  代码完成后提交到windows 服务器上  后台登陆的时候  点击提交,用户和密码都是正确的 就是无法登陆,以为是服务器的问题

然后看到前台多了一个bom   结果把bom 去掉  果断登录可跳转    附上几个图 给大家看看


OneThink源码最新官方版,OneThink V1.0.130929 开发版发布,V1.0.130929开发版本在中秋发布的1.0beta版本的基础上,做了一些架构的改进优化,功能部分也有所增加,以及个别用户体验的改进。(详细参考后面的更新日志) 如果没有特别通知,国庆假期后每周五会出新的开发版本,用于修正BUG优化,以及新功能体验。 在正式版发布之前,BUG反馈建议请到 http://www.thinkphp.cn/topic/onethink.html 文档工作我们正在紧张整理中,再次感谢大家对OT的关注支持,你们的努力让OT走的更远! OneThink v1.0.131011,注意事项:1、再次提醒,OneThink安装要求PHP5.3+版本,否则会出错。2、目前开发版不支持升级功能,所以请备份好之前的数据文件后重新安装。3、因为插件机制调整,如果自己有开发过插件,请注意按照新的插件命名方法进行调整。 4、目前不支持BAE,SAE的支持会在正式版发布的时候增加。 更新日志: [ 1.0.131011开发版 ] + 新增 导航管理支持层级 + 新增 数据备份 + 新增 "内容"增加"目录文档"导入功能 + 改进 "系统/配置管理"列表支持分页搜索 + 改进 文档标识只需在同一根节点下不重复 + 改进 富文本编辑器可以设置高度 + 修复 “内容” 左侧菜单不显示二级以上分类bug; + 修复 如果后台回收站没有数据时,点击清空,会把所有文章数据都清空 + 修复 草稿不能发布的问题 更新日志: [ 1.0.131025开发版 ] + 独立模型的创建,字段的创建,支持通过已有数据表导入模型 + 独立模型字段排序 + 数据列表的定制,可自由定制显示列 + 新增编辑表单的自动生成 (目前支持的类型有限,下周继续完善) + 权限管理添加按模型授权支持 [ 1.0.131018开发版 ] + 新增 数据库备份支持压缩功能 + 新增 数据库压缩功能可以配置是否开启,并可以设置压缩级别 + 新增 数据库还原功能 + 新增 插件入口文件$info属性增加url字段,用于配置插件官网url, 没配置则链接到插件上传者onethink官网用户中心(目前连接到onethink官网首页) + 新增 基础文档表新增root字段,便于子文档的搜索及其他操作 + 新增 分类的移动合并操作 + 新增 后台添加新用户功能 + 新增 后台用户搜索功能 + 新增 Upload上传增加SAE驱动 * 完善 文档的标识只在同一根节点下不重复 - 修复 批量导入没有进行自动验证自动完成 - 修复 文档外链获取链接错误BUG # 变更 编辑器插件markdown编辑变更为 thinkeditor(新版)
题目:基于SpringBoot+Mysql+MyBatis-Plus实现简单商城项目(满分100分) 说明:制作后端有关于商品表的增、删、改、查接口以及用户登录接口并通过ApiFox测试接口功能是否齐全。 要求: 1、使用SpringBoot+Maven搭建后端项目。 2、连接MySQL数据库,创建对应数据库数据表。 3、基于Mybatis-Plus实现用户登录接口以及对应商品的增、删、改、查功能接口。 4、使用ApiFox验证接口功能完整性。 5、Apifox验证的每个接口效果截图统一存放在文件夹中(注:ApiFox需要看到完整请求路径以及后端返回的响应体数据)。 6、文件夹命名格式要求为学号+姓名 提交的内容有项目工程源码、效果截图。 7.用户表商品表如下表所示 请根据提供的字段来设计数据表,数据库名为自己名字拼音缩写 用户表 字段名 类型 描述 user_id INT 主键ID(填充数据时 填充自己的学号后两位) Password VARCHAR(50) 密码 username VARCHAR(50) 用户名(填充数据时 填充自己的姓名) is_active TINYINT(1) 账户状态(1启用/0禁用) 商品表 字段名 类型 描述 product_id INT 主键,自增商品ID product_name VARCHAR(100) 商品名称 price VARCHAR(50) 价格 is_available INT 上架状态(1在售/0下架) 评分标准:(满分100分) (1)使用SpringBoot+Maven搭建后端项目(20分); (2)MySQL设计实现的数据表齐全 (10分); (3)SpringBoot实现用户登录功能 (15分); (4)SpringBoot实现商品的增、删、改、查的功能(20分); (5)使用Apifox测试对应接口功能 (15分); (6)项目按照题目以及说明实现,截图清晰完整(20分); 根据以下代码搭建前端: 代码: Src: Main: Java: Com.example.mall: Controller: ProductController: package com.example.mall.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.mall.entity.Product; import com.example.mall.entity.SaResult; import com.example.mall.service.ProductService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/product") public class ProductController { private final ProductService productService; @Autowired public ProductController(ProductService productService) { this.productService = productService; } @PostMapping public SaResult add(@RequestBody Product product) { boolean result = productService.save(product); return result ? SaResult.data(product) : SaResult.error("添加失败"); } @DeleteMapping("/{id}") public SaResult delete(@PathVariable Integer id) { boolean result = productService.removeById(id); return result ? SaResult.ok("删除成功") : SaResult.error("删除失败"); } @PutMapping public SaResult update(@RequestBody Product product) { boolean result = productService.updateById(product); return result ? SaResult.data(product) : SaResult.error("更新失败"); } @GetMapping("/{id}") public SaResult getById(@PathVariable Integer id) { Product product = productService.getById(id); return product != null ? SaResult.data(product) : SaResult.error("商品不存在"); } @GetMapping("/list") public SaResult list() { return SaResult.data(productService.list()); } @GetMapping("/page") public SaResult page(@RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize) { Page<Product> page = new Page<>(pageNum, pageSize); return SaResult.data(productService.page(page)); } } UserControllrt: package com.example.mall.controller; import com.example.mall.entity.SaResult; import com.example.mall.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/user") public class UserController { private final UserService userService; @Autowired public UserController(UserService userService) { this.userService = userService; } @PostMapping("/login") public SaResult login(@RequestParam String username, @RequestParam String password) { return userService.login(username, password); } } Dao: ProductMapper: package com.example.mall.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.mall.entity.Product; import org.apache.ibatis.annotations.Mapper; @Mapper public interface ProductMapper extends BaseMapper<Product> { } Entity: Product: package com.example.mall.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("product") public class Product { @TableId(type = IdType.AUTO) private Integer productId; private String productName; private String price; private Integer isAvailable; } SaResult: package com.example.mall.entity; import java.io.Serializable; import java.util.LinkedHashMap; public class SaResult extends LinkedHashMap<String, Object> implements Serializable { private static final long serialVersionUID = 1L; public static final int CODE_SUCCESS = 200; public static final int CODE_ERROR = 500; public SaResult() { } public SaResult(int code, String msg, Object data) { this.setCode(code); this.setMsg(msg); this.setData(data); } // 添加setter方法 public void setCode(int code) { this.put("code", code); } public void setMsg(String msg) { this.put("msg", msg); } public void setData(Object data) { this.put("data", data); } public static SaResult ok() { return new SaResult(CODE_SUCCESS, "ok", null); } public static SaResult ok(String msg) { return new SaResult(CODE_SUCCESS, msg, null); } public static SaResult data(Object data) { return new SaResult(CODE_SUCCESS, "ok", data); } public static SaResult error() { return new SaResult(CODE_ERROR, "error", null); } public static SaResult error(String msg) { return new SaResult(CODE_ERROR, msg, null); } } User: package com.example.mall.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("user") public class User { @TableId(type = IdType.INPUT) private Integer userId; private String password; private String username; private Integer isActive; } Service: UserServicelmpl: ProductServicelmpl: package com.example.mall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.mall.dao.ProductMapper; import com.example.mall.entity.Product; import com.example.mall.service.ProductService; import org.springframework.stereotype.Service; @Service public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService { } UserServicelmpl: package com.example.mall.service.UserServiceImpl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.example.mall.dao.UserMapper; import com.example.mall.entity.SaResult; import com.example.mall.entity.User; import com.example.mall.service.UserService; import org.springframework.stereotype.Service; @Service public class UserServiceImpl implements UserService { private final UserMapper userMapper; public UserServiceImpl(UserMapper userMapper) { this.userMapper = userMapper; } @Override public SaResult login(String username, String password) { QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("username", username) .eq("password", password); User user = userMapper.selectOne(queryWrapper); if (user == null) { return SaResult.error("用户名或密码错误"); } if (user.getIsActive() == 0) { return SaResult.error("账号已被禁用"); } return SaResult.data(user); } } ProductService: package com.example.mall.service; import com.baomidou.mybatisplus.extension.service.IService; import com.example.mall.entity.Product; public interface ProductService extends IService<Product> { } UserService: package com.example.mall.service; import com.example.mall.entity.SaResult; import com.example.mall.entity.User; public interface UserService { SaResult login(String username, String password); } MallApplication: package com.example.mall; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MallApplication { public static void main(String[] args) { SpringApplication.run(MallApplication.class, args); } } Resources: Application.yml server: port: 8080 servlet: context-path: /api spring: datasource: url: jdbc:mysql://localhost:3306/huangshuhua_db username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
最新发布
06-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值