IDEA + Spring Boot + Security + MyBatis Plus+Mysql低代码快速开发平台

news2024/11/25 2:45:30

IDEA + Spring Boot + Security + MyBatis Plus+Mysql低代码快速开发平台

  • 一、系统介绍
    • 1.环境配置
  • 二、系统展示
    • 1. 管理员登录
    • 2.主页
    • 3.用户管理
    • 4.角色管理
    • 5. 权限管理
    • 6. 部门管理
    • 7. 数据字典
    • 8.文件管理
    • 9.系统配置
    • 10.电子邮件
    • 11.站内消息
    • 12.数据监控
    • 13.定时任务
    • 14.在线用户
    • 15.任务日志
    • 16.行为日志
    • 17.环境监控
  • 三、部分代码
    • SysUserMapper.java
    • SysUserController.java
    • SysUser.java
  • 四、其他
    • 获取源码


一、系统介绍

本系统实现了低代码开发平台,管理端实现了管理员登录、 主页、用户管理、角色管理、权限管理、部门管理、数据字典、文件管理、系统配置、电子邮件、站内消息、数据监控、定时任务、在线用户、任务日志、行为日志、环境监控

1.环境配置

JDK版本:1.8
Mysql:5.7

二、系统展示

1. 管理员登录

在这里插入图片描述

登录用户名密码:admin 123456

2.主页

在这里插入图片描述

3.用户管理

在这里插入图片描述

4.角色管理

在这里插入图片描述

5. 权限管理

在这里插入图片描述

6. 部门管理

在这里插入图片描述

7. 数据字典

在这里插入图片描述

8.文件管理

在这里插入图片描述

9.系统配置

在这里插入图片描述

10.电子邮件

在这里插入图片描述

11.站内消息

在这里插入图片描述

12.数据监控

在这里插入图片描述

13.定时任务

在这里插入图片描述

14.在线用户

在这里插入图片描述

15.任务日志

在这里插入图片描述

16.行为日志

在这里插入图片描述

17.环境监控

在这里插入图片描述

三、部分代码

SysUserMapper.java

package com.modules.sys.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.modules.sys.domain.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


@Mapper
public interface SysUserMapper extends BaseMapper<SysUser> {



    /**
     * Describe: 重置部门
     * Param: deptId
     * Return: Integer
     */
    Integer resetDeptByDeptId(String deptId);

    /**
     * Describe: 批量重置部门
     * Param: deptIds
     * Return: Integer
     */
    Integer resetDeptByDeptIds(String[] deptIds);

}


SysUserController.java

package com.modules.sys.controller;

import com.github.pagehelper.PageInfo;
import com.common.constant.ControllerConstant;
import com.common.aop.annotation.Log;
import com.common.aop.enums.BusinessType;
import com.common.aop.annotation.Repeat;
import com.common.context.UserContext;
import com.common.web.base.BaseController;
import com.common.web.domain.request.PageDomain;
import com.common.web.domain.response.Result;
import com.common.web.domain.response.module.ResultTable;
import com.modules.sys.domain.SysUser;
import com.modules.sys.domain.SysPassword;
import com.modules.sys.service.SysRoleService;
import com.modules.sys.service.SysUserService;
import com.modules.sys.service.SysLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.logging.log4j.util.Strings;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import java.util.Arrays;


@RestController
@Api(tags = {"用户管理"})
@RequestMapping(ControllerConstant.API_SYSTEM_PREFIX + "user")
public class SysUserController extends BaseController {

    /**
     * Describe: 基础路径
     */
    private static String MODULE_PATH = "system/user/";

    /**
     * Describe: 用户模块服务
     */
    @Resource
    private SysUserService sysUserService;

    /**
     * Describe: 角色模块服务
     */
    @Resource
    private SysRoleService sysRoleService;

    /**
     * Describe: 日志模块服务
     */
    @Resource
    private SysLogService sysLogService;

    /**
     * Describe: 密码加密
     * */
    @Resource
    private PasswordEncoder passwordEncoder;

    /**
     * Describe: 获取用户列表视图
     * Param ModelAndView
     * Return 用户列表视图
     */
    @GetMapping("main")
    @ApiOperation(value = "获取用户列表视图")
    @PreAuthorize("hasPermission('/system/user/main','sys:user:main')")
    public ModelAndView main() {
        return jumpPage(MODULE_PATH + "main");
    }

    /**
     * Describe: 获取用户列表数据
     * Param ModelAndView
     * Return 用户列表数据
     */
    @GetMapping("data")
    @ApiOperation(value = "获取用户列表数据")
    @PreAuthorize("hasPermission('/system/user/data','sys:user:data')")
    @Log(title = "查询用户", describe = "查询用户", type = BusinessType.QUERY)
    public ResultTable data(PageDomain pageDomain, SysUser param) {
        PageInfo<SysUser> pageInfo = sysUserService.page(param, pageDomain);
        return pageTable(pageInfo.getList(), pageInfo.getTotal());
    }

    /**
     * Describe: 用户新增视图
     * Param ModelAndView
     * Return 返回用户新增视图
     */
    @GetMapping("add")
    @ApiOperation(value = "获取用户新增视图")
    @PreAuthorize("hasPermission('/system/user/add','sys:user:add')")
    public ModelAndView add(Model model) {
        model.addAttribute("sysRoles", sysRoleService.list(null));
        return jumpPage(MODULE_PATH + "add");
    }

    /**
     * Describe: 用户新增接口
     * Param ModelAndView
     * Return 操作结果
     */
    @Repeat
    @PostMapping("save")
    @ApiOperation(value = "保存用户数据")
    @PreAuthorize("hasPermission('/system/user/add','sys:user:add')")
    @Log(title = "新增用户", describe = "新增用户", type = BusinessType.ADD)
    public Result save(@RequestBody SysUser sysUser) {
        sysUser.setLogin("0");
        sysUser.setEnable("1");
        sysUser.setStatus("1");
        sysUser.setPassword(passwordEncoder.encode(sysUser.getPassword()));
        sysUserService.save(sysUser);
        sysUserService.saveUserRole(sysUser.getUserId(), Arrays.asList(sysUser.getRoleIds().split(",")));
        return success("保存成功");
    }

    /**
     * Describe: 用户修改视图
     * Param ModelAndView
     * Return 返回用户修改视图
     */
    @GetMapping("edit")
    @ApiOperation(value = "获取用户修改视图")
    @PreAuthorize("hasPermission('/system/user/edit','sys:user:edit')")
    public ModelAndView edit(Model model, String userId) {
        model.addAttribute("sysRoles", sysUserService.getUserRole(userId));
        model.addAttribute("sysUser", sysUserService.getById(userId));
        return jumpPage(MODULE_PATH + "edit");
    }

    /**
     * Describe: 用户密码修改视图
     * Param ModelAndView
     * Return 返回用户密码修改视图
     */
    @GetMapping("editpasswordadmin")
    @ApiOperation(value = "获取管理员修改用户密码视图")
    @PreAuthorize("hasPermission('/system/user/editPasswordAdmin','sys:user:editPasswordAdmin')")
    public ModelAndView editPasswordAdminView(Model model, String userId) {
        model.addAttribute("userId", userId);
        return jumpPage(MODULE_PATH + "editPasswordAdmin");
    }

    /**
     * Describe: 管理员修改用户密码接口
     * Param editPassword
     * Return: Result
     */
    @PutMapping("editPasswordAdmin")
    @ApiOperation(value = "管理员修改用户密码")
    @PreAuthorize("hasPermission('/system/user/editPasswordAdmin','sys:user:editPasswordAdmin')")
    public Result editPasswordAdmin(@RequestBody SysUser sysUser) {
        sysUser.setPassword(passwordEncoder.encode(sysUser.getPassword()));
        return decide(sysUserService.updateById(sysUser), "修改成功", "修改失败");
    }

    /**
     * Describe: 用户密码修改视图
     * Param ModelAndView
     * Return 返回用户密码修改视图
     */
    @GetMapping("editPassword")
    public ModelAndView editPasswordView() {
        return jumpPage(MODULE_PATH + "password");
    }

    /**
     * Describe: 用户密码修改接口
     * Param editPassword
     * Return: Result
     */
    @PutMapping("editPassword")
    public Result editPassword(@RequestBody SysPassword sysPassword) {
        String oldPassword = sysPassword.getOldPassword();
        String newPassword = sysPassword.getNewPassword();
        String confirmPassword = sysPassword.getConfirmPassword();
        SysUser sysUser = UserContext.currentUser();
        SysUser editUser = sysUserService.getById(sysUser.getUserId());
        if (Strings.isBlank(confirmPassword) || Strings.isBlank(newPassword) || Strings.isBlank(oldPassword)) {
            return failure("输入不能为空");
        }
        if (!new BCryptPasswordEncoder().matches(oldPassword, editUser.getPassword())) {
            return failure("密码验证失败");
        }
        if (!newPassword.equals(confirmPassword)) {
            return failure("两次密码输入不一致");
        }
        editUser.setPassword(passwordEncoder.encode(newPassword));
        boolean result = sysUserService.updateById(editUser);
        return decide(result, "修改成功", "修改失败");
    }

    /**
     * Describe: 用户修改接口
     * Param ModelAndView
     * Return 返回用户修改接口
     */
    @PutMapping("update")
    @ApiOperation(value = "修改用户数据")
    @PreAuthorize("hasPermission('/system/user/edit','sys:user:edit')")
    @Log(title = "修改用户", describe = "修改用户", type = BusinessType.EDIT)
    public Result update(@RequestBody SysUser sysUser) {
        sysUserService.saveUserRole(sysUser.getUserId(), Arrays.asList(sysUser.getRoleIds().split(",")));
        sysUserService.updateById(sysUser);
        return success("修改成功");
    }

    /**
     * Describe: 头像修改接口
     * Param: SysUser
     * Return: Result
     */
    @PutMapping("updateAvatar")
    @ApiOperation(value = "修改用户头像")
    @Log(title = "修改头像", describe = "修改头像", type = BusinessType.EDIT)
    public Result updateAvatar(@RequestBody SysUser sysUser) {
        String userId = UserContext.currentUser().getUserId();
        sysUser.setUserId(userId);
        return decide(sysUserService.updateById(sysUser));
    }

    /**
     * Describe: 用户批量删除接口
     * Param: ids
     * Return: Result
     */
    @DeleteMapping("batchRemove/{ids}")
    @ApiOperation(value = "批量删除用户")
    @PreAuthorize("hasPermission('/system/user/remove','sys:user:remove')")
    @Log(title = "删除用户", describe = "删除用户", type = BusinessType.REMOVE)
    public Result batchRemove(@PathVariable String ids) {
        return decide(sysUserService.batchRemove(ids.split(",")));
    }

    /**
     * Describe: 用户删除接口
     * Param: id
     * Return: Result
     */
    @Transactional(rollbackFor = Exception.class)
    @DeleteMapping("remove/{id}")
    @ApiOperation(value = "删除用户数据")
    @PreAuthorize("hasPermission('/system/user/remove','sys:user:remove')")
    @Log(title = "删除用户", describe = "删除用户", type = BusinessType.REMOVE)
    public Result remove(@PathVariable String id) {
        return decide(sysUserService.remove(id));
    }

    /**
     * Describe: 根据 userId 开启用户
     * Param: SysUser
     * Return: 执行结果
     */
    @PutMapping("enable")
    @ApiOperation(value = "开启用户登录")
    public Result enable(@RequestBody SysUser sysUser) {
        sysUser.setEnable("1");
        return decide(sysUserService.updateById(sysUser));
    }

    /**
     * Describe: 根据 userId 禁用用户
     * Param: SysUser
     * Return: 执行结果
     */
    @PutMapping("disable")
    @ApiOperation(value = "禁用用户登录")
    public Result disable(@RequestBody SysUser sysUser) {
        sysUser.setEnable("0");
        return decide(sysUserService.updateById(sysUser));
    }

    /**
     * Describe: 个人资料
     * Param: null
     * Return: ModelAndView
     */
    @GetMapping("center")
    @ApiOperation(value = "个人资料")
    public ModelAndView center(Model model) {
        SysUser sysUser = UserContext.currentUser();
        model.addAttribute("userInfo", sysUserService.getById(sysUser.getUserId()));
        model.addAttribute("logs", sysLogService.selectTopLoginLog(sysUser.getUsername()));
        return jumpPage(MODULE_PATH + "center");
    }

    /**
     * Describe: 用户修改接口
     * Param ModelAndView
     * Return 返回用户修改接口
     */
    @PutMapping("updateInfo")
    @ApiOperation(value = "修改用户数据")
    public Result updateInfo(@RequestBody SysUser sysUser) {
        return decide(sysUserService.updateById(sysUser));
    }

    /**
     * Describe: 更换头像
     * Param: null
     * Return: ModelAndView
     */
    @GetMapping("profile/{id}")
    public ModelAndView profile(Model model, @PathVariable("id") String userId) {
        model.addAttribute("userId", userId);
        return jumpPage(MODULE_PATH + "profile");
    }
}



SysUser.java

package com.modules.sys.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.common.web.base.BaseDomain;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.apache.ibatis.type.Alias;
import org.springframework.security.core.CredentialsContainer;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;

/**
 * Describe: 用户领域模型
 * @author 就 眠 仪 式
 * @date 2019/10/23
 */
@Data
@Alias("SysUser")
@TableName("sys_user")
@JsonIgnoreProperties(ignoreUnknown = true)
public class SysUser extends BaseDomain implements UserDetails, CredentialsContainer {

    /**
     * 编号
     */
    @TableId
    private String userId;

    /**
     * 账户
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 盐
     */
    private String salt;

    /**
     * 状态
     */
    private String status;

    /**
     * 姓名
     */
    private String realName;

    /**
     * 邮箱
     */

    private String email;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 性别
     */
    private String sex;

    /**
     * 电话
     */
    private String phone;

    /**
     * 所属部门
     */
    private String deptId;

    /**
     * 是否启用
     */
    private String enable;

    /**
     * 是否登录
     */
    private String login;

    /**
     * 上次登录
     */
    private LocalDateTime lastTime;

    /**
     * 角色列表
     */
    @TableField(exist = false)
    private String roleIds;

    /**
     * 角色列表
     * */
    @TableField(exist = false)
    private List<SysRole> roles;


    /**
     * 权限列表
     */
    @TableField(exist = false)
    private List<SysPower> powerList;

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return null;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return "1".equals(this.getStatus()) ? true : false;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return "1".equals(this.getEnable()) ? true : false;
    }

    @Override
    public void eraseCredentials() {
        this.password = null;
    }
}




四、其他

获取源码

点击以下链接获取源码。
IDEA + Spring Boot + Security + MyBatis Plus+Mysql低代码快速开发平台
IDEA+spring boot+activiti+shiro++layui+Mysql权限管理系统源码
IDEA+SpringBoot + Mybatis + Shiro+Bootstrap+Mysql智慧仓库WMS源码
IDEA+springboot+ssm+layui+mysql高校宿舍管理系统源码
IDEA+springboot + ssm +shiro+ easyui +mysql实现的进销存系统
IDEA+springboot+mybatis+shiro+bootstrap+Mysql网上书店管理系统
IDEA+springboot+mybatis+shiro+bootstrap+Mysql WMS仓库管理系统
IDEA+spring+spring mvc+mybatis+bootstrap+jquery+Mysql运动会管理系统源码
IDEA+SpringBoot+mybatis+bootstrap+jquery+Mysql车险理赔管理系统源码
IDEA+Spring Boot + MyBatis + Layui+Mysql垃圾回收管理系统源码
IDEA+SpringBoot+mybatis+SSM+layui+Mysql学生就业信息管理系统源码
IDEA+springboot+jpa+Layui+Mysql销售考评系统源码
IDEA+Spring + Spring MVC + MyBatis+Bootstrap+Mysql酒店管理系统源码
IDEA+spring boot+mybatis+spring mvc+bootstrap+Mysql停车位管理系统源码

Java+Swing+Mysql实现学生宿舍管理系统

Java+Swing+Txt实现自助款机系统

Java+Swing+Mysql自助存取款机系统

Java+Swing+mysql5实现学生成绩管理系统(带分页)

Java+Swing+Mysql实现超市商品管理系统源码

Java+Swing+Mysql实现通讯录管理系统源码

Java+Swing+Mysql实现图书管理系统源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/775373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

芯片验证板卡设计方案:基于VU440T的多核处理器多输入芯片验证板卡

基于VU440T的多核处理器多输入芯片验证板卡 一、板卡概述 基于XCVU440-FLGA2892的多核处理器多输入芯片验证板卡为实现网络交换芯片的验证&#xff0c;包括四个FMC接口、DDR、GPIO等&#xff0c;板卡用于完成甲方的芯片验证任务&#xff0c;多任务功能验证。 …

图书管理系统【C语言】

咱就是说这太令人绝望了&#xff01; &#xff01;&#xff01; 图书管理系统 这是一个平平无奇的系统。 一、系统要求 1、实现以下基本功能 1.添加图书 2.删除图书 3.保存图书 4.图书列表 5.修改图书 6.查找图书 7.图书排序 …

网络安全运维工程师的主要职责

什么是安全运维工程师呢&#xff1f;安全运维工程师就是网络安全大方向下的网络安全运行与维护的一个细分岗。 IT运维工作方向比较多&#xff0c;列如安全运维、数据运维、应用运维、系统运维等&#xff0c;今天我们就来了解一下网络完全运维工程师是什么&#xff1f;同时也了…

【Java】顺序表

文章目录 顺序表LinkedListArrayList构造方法带参&#xff08;int&#xff09;构造不带参构造满&#xff0c;需要扩容 remove()remove(int)remove(Object) subList() 几点注意顺序表的优缺点优点&#xff1a;缺点&#xff1a; 顺序表 底层是数组&#xff0c;进行动态分配后可以…

NAT种类和NAT穿越

NAT种类 说明 NAT有三种类型&#xff1a;静态NAT(tatic NAT)、动态地址NAT(Pooled NAT)和网络地址端口转换(NetworkAddress PortTranslation&#xff0c;NAPT)。 其中静态NAT设置起来最简单&#xff1b; 内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址&#x…

求出0~100000之间的所有“水仙花数”并输出

求出0~100000之间的所有“水仙花数”并输出。 “水仙花数”是指一个N位数&#xff0c;其各位数字的n次方之和正好等于该数本身。 如&#xff1a;1531^3 5^3 3^3 , 则153是一个“水仙花数” 先来了解一下水仙花数的概念&#xff1a; 水仙花数只是自幂数的一种&#xff0c;严…

Flutter侧边栏组件Drawer

主要代码&#xff1a; drawer: const Drawer(child: Column(children: [Row(children: [Expanded(flex: 1,child: UserAccountsDrawerHeader(accountName: Text("张三"),accountEmail: Text("xxxqq.com"),currentAccountPicture: CircleAvatar(backgroundI…

解决git克隆到本地的仓库文件夹不显示红色感叹号、绿色对号等图标的问题

电脑有时候重启或者别的什么原因导致本地仓库不显示绿勾或者红色感叹号的符号 第一步: win加R然后输入regedit打开注册表 第二步: 按下面路径打开 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 找到如下图在Tort…

浅谈JVM内存结构

一、JVM内存结构的大概划分&#xff1a; 1.1 堆(Heap) 线程共享。所有的对象实例以及数组都要在堆上分配。回收器主要管理的对象。 1.1.1 堆结构 堆可以处于物理上不连续的内存空间中&#xff0c;只要逻辑上是连续的即可。堆的内部结构按照传统的做法分成新生代和老年代&…

喝汽水问题:1瓶汽水1元。2个空瓶可以换1瓶汽水,给20元,可以买多少汽水 (7.19)

泪目&#xff01;&#xff01;&#xff01;终于是自己完完整整写出的代码了&#xff0c;不翻资料也没看参考代码 &#xff08;之前的要么和老师练习&#xff0c;要么找教材东拼西凑&#xff09; 方法2&#xff1a;数学角度看bottle价值0.5 元&#xff0c;20元最多可换40bottl…

Python venv 和 virtualenv 虚拟环境的基本使用

1.前言 venv 和 virtualenv 都是搭建虚拟环境的工具&#xff0c;virtualenv 是第三方开源的&#xff0c;而 venv 作为 virtualenv 的一个子集自 Python3.3 开始集成到标准库中&#xff0c;在 virtualenv 的文档中可以看到他们的区别&#xff1a; 没有 app-data 种子方法&#…

LLM 盛行,如何优雅地训练大模型?

作者 | 王嘉宁 整理 | NewBeeNLP https://wjn1996.blog.csdn.net/article/details/130764843 大家好&#xff0c;这里是 NewBeeNLP。 ChatGPT于2022年12月初发布&#xff0c;震惊轰动了全世界&#xff0c;发布后的这段时间里&#xff0c;一系列国内外的大模型训练开源项目接踵而…

手把手教你搭建SpringCloud项目(十)集成Hystrix之服务降级

什么是微服务&#xff1f;一看就会系列&#xff01; 一、手把手教你搭建SpringCloud项目&#xff08;一&#xff09;图文详解&#xff0c;傻瓜式操作 二、手把手教你搭建SpringCloud项目&#xff08;二&#xff09;生产者与消费者 三、手把手教你搭建SpringCloud项目&#x…

公司老项目改造适配不同分辨率2k、3k、4k

项目改造适配不同分辨率 最近公司要做项目适配2k、3k、4k屏的分辨率&#xff0c;在网上找了很多中方案&#xff0c;常用且方便的是使用zoom全局缩放&#xff0c;因为是老项目所以对样式进行了重写整体使用了flex百分比布局 使用 1、在utils文件夹中新建一个zoom.js文件 这个是…

ACL 2023 | 持续进化中的语言基础模型

尽管如今的 AI 模型已经具备了理解自然语言的能力&#xff0c;但科研人员并没有停止对模型的不断改善和理论探索。自然语言处理&#xff08;NLP&#xff09;领域的技术始终在快速变化和发展当中&#xff0c;酝酿着新的潮流和突破。 NLP 领域的顶级学术会议国际计算语言学年会 …

java中的三大集合类各自的特点以及适用场景

目录 ​编辑 三大容器的介绍 使用场景介绍 List 实现类 Map 实现类 Set 实现类&#xff1a; 三大容器的介绍 List&#xff08;列表&#xff09; 结构&#xff1a;由有序的元素序列组成&#xff0c;可以包含重复元素特点&#xff1a;可以通过索引访问元素&#xff0c;插入的顺…

SQL注入实操(更新中)

文章目录 一、sqli-lab靶场搭建二、通关笔记1.Less-1a.单引号‘b.updatexmlc.concatd.unione.information_schemaf.GROUP_CONCATg.select 1,2 2.Less-23.Less-3a.怎么找到注入点b.判断SQL注入漏洞的类型c.闭合语句d.如何判断显示位e.答案 4.Less-45.Less-5a.判断注入漏洞的依据…

PhpStudy2016-2018-RCE 漏洞复现

漏洞描述 PHPStudyRCE&#xff08;Remote Code Execution&#xff09;&#xff0c;也称为phpstudy_backdoor漏洞&#xff0c;是指PHPStudy软件中存在的一个远程代码执行漏洞。 漏洞影响范围 Phpstudy软件是国内的一款免费的PHP调试环境的程序集成包&#xff0c;通过集成Apac…

WEB:shrine

背景知识 了解Flask SSIT模板注入 题目 进行代码审计 import flask import osapp flask.Flask(__name__) /*创建了flask包下的Flask类的对象&#xff0c;name是一个适用于多数情况的快捷方式。有了这个参数&#xff0c;Flask才知道在哪里可以找到模板和静态文件*/app.confi…

HYPE分布式水文模型教程

详情点击链接&#xff1a;HYPE分布式水文模型建模方法与案例分析 前言 HYPE(Hydrological Predictions for the Environment, HYPE)是由瑞典皇家水文气象局&#xff08;SMHI&#xff09;在HBV和HBV-NP模型基础上开发的新一代分布式水文模型&#xff0c;已经在全球众多地区得…