开发者社区> yippee357> 正文

WEB专业例子测试

简介: WEB专业例子测试
+关注继续查看

loginController

@RequestMapping ("/login")

@RestController
@Configuration
@EnableWebSecurity
public class LoginController  {

   @Resource
private UserDetailServiceImpl userDetailServiceImpl;

   @Bean
   AuthenticationManager authenticationManager(HttpSecurity httpSecurity) throws Exception {

       return httpSecurity.getSharedObject(AuthenticationManagerBuilder.class)

               .userDetailsService(userDetailServiceImpl)

               .passwordEncoder(passwordEncoder())

               .and()

               .build();

   }


   /**
    * 过滤器链
    *
    * @param authenticationManager 身份验证管理器
    * @param http                  http
    * @return {@link SecurityFilterChain}
    * @throws Exception 异常
    */
   @Bean
   public SecurityFilterChain filterChain(AuthenticationManager authenticationManager, HttpSecurity http) throws Exception {

       return http

               .authorizeRequests()

               .antMatchers("/add","/adduser")

               .permitAll()

               .anyRequest()

               .authenticated()

               .and()

               .formLogin()

               .loginPage("/admin/login")

               .loginProcessingUrl("/admin/login")

               .permitAll()

               .successHandler((request, response, authentication) -> {

                   response.setContentType("application/json;charset=utf-8");

                   response.getWriter().write("{\"code\":200,\"msg\":\"登录成功\"}");


               }).failureHandler((request, response, exception) -> {

                   response.setContentType("application/json;charset=utf-8");

                   response.getWriter().write("{\"code\":500,\"msg\":\"登录失败\"}");

               })

               .and()

               .logout()

               .logoutSuccessUrl("/logoutSuccess")

               .permitAll()

               .and()

               .csrf().disable()

               .headers().frameOptions().disable()

               .and()

               .build();

   }

   @Bean
   public WebSecurityCustomizer webSecurityCustomizer() {

       return (web) -> web.ignoring().antMatchers("/layui/**");

   }

   @Bean
   public PasswordEncoder passwordEncoder() {

       return new BCryptPasswordEncoder(); // 使用BCrypt加密
   }



}

RouterController

@Controller
public class RouterController {

   @RequestMapping("/")

public String index(){

       return "index";

   }

   @RequestMapping("/admin/login")

   public String login (){

       return "login";

   }

   @RequestMapping("/logoutSuccess")

   public String logoutSuccess(){

       return "logout";

   }

   @RequestMapping("/add")

   public String add(){

       return "add";

   }

}


addcontroller

@RestController

public class AddController {

   @Resource
   private AdminService adminService;

   @RequestMapping("/adduser")

   public Boolean addUser (Admin admin){

       adminService.addUsers(admin);




       return true;


   }

}

TreeMenuController

@RequestMapping("/list")

@RestController

public class TreeMenuController {

   @Resource
   private TreeMenuService TreeMenuService;

   @RequestMapping("/menu")

public List<TreeMenu>TreeMenu (){

   Admin admin = (Admin) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

   List<TreeMenu> list = TreeMenuService.selectMenuByRoleId(admin.getRoleId());

   return list;

}


}


adminmapper

public interface AdminMapper {

   @Select("select * from admin where account = #{account}")

   Admin selectById(String account) ;

   @Select("insert into admin value (#{id},#{account},#{password},#{roleId})")

   Boolean addUser(Admin admin);

@Select("update admin set account = #{account},password = #{password},role_id = #{roleId} where account = #{account}")

Boolean updateUser(Admin admin);

}


TreeMenuMappeer

public interface TreeMenuMapper {


   @Select("select menu.* FROM treemenu menu inner join role_treemenu rm on menu.id = rm .menu_id where rm .role_id = #{roleId}")

   List<TreeMenu> selectMenuByRoleId (Integer roleId);

}


AdminServiceImpl

public class AdminServiceImpl implements AdminService {

   @Resource
   private AdminMapper adminMapper;

   @Override
   public Admin selectById(String account) {

       return adminMapper.selectById(account);

   }

   @Override
   public Boolean addUsers(Admin admin) {

//        密码加密
       String newPassword =  new BCryptPasswordEncoder().encode(admin.getPassword());

       admin.setPassword(newPassword);

       return adminMapper.addUser(admin);

   }

}


TreeMenuServiceImpl

@Service
public class TreeMenuServiceImpl implements TreeMenuService {

   @Resource
   TreeMenuMapper treeMenuMapper;

   @Override
   public List<TreeMenu> selectMenuByRoleId(Integer roleId) {

       return treeMenuMapper.selectMenuByRoleId(roleId);

   }

}


UserDetailServiceImpl

@Service
public class UserDetailServiceImpl implements UserDetailsService {

   @Resource
   private AdminService adminService;

   @Override
   public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

       Admin admin=  adminService.selectById(username);

       return admin;

   }

}

AdminService

public interface AdminService {

   Admin selectById(String account);

   Boolean addUsers(Admin admin);

}


TreeMenuService

public interface TreeMenuService {

   List<TreeMenu> selectMenuByRoleId (Integer roleId);

}




ADD.html

html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <title>注册title>

head>

<body>

input your id:<input id="id">input>

<br>

input your username:<input id="username">input>

<br>

input your password:<input type =password id="password">input>

<br>

input your roleid:<input id="role_id">

<br>

<button onclick="add()">注册button>

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js">script>

<script>

   function add(){

       var username = $("#username").val();

       var password = $("#password").val();

        var id = $("#id").val();

         var role_id = $("#role_id").val();

           // ajax 请求登录接口跳转首页
           $.ajax({

               url: '/adduser',

               type: 'post',

               dataType: 'json',

               data: {

               id:id,

               account:username,

               password:password,

               roleId:role_id

                     },

           success: function (data) {

               if (data==true) {

                 window.location = "/login";


                   alert("注册成功,请重新登录!");

               }else alert("注册失败,请重新输入信息!");

           }, error: function (data) {

               console.log(data);

           }

       });

   }

script>

body>

html>



jiazai

<script>

   function jiazai(){

$.ajax({

             url: "/list/menu",

             type: "get",

             success: function (data) {

                 if (data){ // 如果有数据
                     var html = "";

                     for (const tr of data){

                         html += ""+tr.name+""+tr.url+""

                     }

                     $("#table").html(html);

                 }

             }

         })

     }

script>

denglu

<script>

   function denglu(){

       var username = $("#username").val();

       var password = $("#password").val();

           // ajax 请求登录接口跳转首页
           $.ajax({

               url: '/admin/login',

               type: 'post',

               dataType: 'json',

               data: {

               username:username,

               password:password

                     },

           success: function (data) {

               if (data.code == 200) {

                 window.location = "/";

               } else {

                   alert("登录失败");

               }

           }, error: function (data) {

               console.log(data);

           }

       });

   }

script>



yum install java-1.8.0-openjdk-devel -y

java -jar loginDemo.jar

nohup java -jar yytest5.jar &

curl 常用的参数

curl -X POST -d "username=admin&password=123456" http://localhost:8080/login

curl -L http://localhost:8080/logout

-X/--request [GET|POST|PUT|DELETE|…]  使用指定的http method发出 http request

-H/--header                           设定request里的header

-i/--include                          显示response的header

-d/--data                             设定 http parameters

-v/--verbose                          輸出比较多的信息

-u/--user                             使用者账号

-b/--cookie                           cookie 文件路径 使用cookie


#spring.datasource.url=jdbc:mysql://10.1.1.30:3306/manager_system
spring.datasource.url=jdbc:mysql://localhost:3306/manager_system
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=YangY657X+

mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

# mybatis ????????
mybatis.configuration.map-underscore-to-camel-case=true



数据库

/*

Navicat Premium Data Transfer

Source Server         : localhost_3306

Source Server Type    : MySQL

Source Server Version : 80030 (8.0.30)

Source Host           : localhost:3306

Source Schema         : manager_system

Target Server Type    : MySQL

Target Server Version : 80030 (8.0.30)

File Encoding         : 65001

Date: 23/03/2023 03:16:08

*/

/**

 如果需要导入的数据库不存在,需要先创建数据库

*/

CREATE DATABASE IF NOT EXISTS `manager_system` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------

-- Table structure for admin

-- ----------------------------

DROP TABLE IF EXISTS `admin`;

CREATE TABLE `admin` (

 `id` int NOT NULL AUTO_INCREMENT,

 `account` varchar(32) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '账号',

 `password` varchar(100) COLLATE utf8mb4_bin NOT NULL COMMENT '密码',

 `role_id` int DEFAULT '-1' COMMENT '角色ID',

 PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------

-- Records of admin

-- ----------------------------

BEGIN;

INSERT INTO `admin` (`id`, `account`, `password`, `role_id`) VALUES (1, 'admin', '$2a$10$U3XImY9eYKEe9faMgVzpc..MLjYYH3Ci4..i0WNrhQYR3JkgtptL.', 1);

COMMIT;

-- ----------------------------

-- Table structure for role

-- ----------------------------

DROP TABLE IF EXISTS `role`;

CREATE TABLE `role` (

 `id` int NOT NULL AUTO_INCREMENT,

 `name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '名称',

 PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------

-- Records of role

-- ----------------------------

BEGIN;

INSERT INTO `role` (`id`, `name`) VALUES (1, 'ROLE_admin');

COMMIT;

-- ----------------------------

-- Table structure for role_treemenu

-- ----------------------------

DROP TABLE IF EXISTS `role_treemenu`;

CREATE TABLE `role_treemenu` (

 `id` int NOT NULL AUTO_INCREMENT,

 `role_id` int DEFAULT NULL COMMENT '角色ID',

 `menu_id` int DEFAULT NULL COMMENT '菜单ID',

 PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------

-- Records of role_treemenu

-- ----------------------------

BEGIN;

INSERT INTO `role_treemenu` (`id`, `role_id`, `menu_id`) VALUES (1, 1, 1);

INSERT INTO `role_treemenu` (`id`, `role_id`, `menu_id`) VALUES (2, 1, 2);

INSERT INTO `role_treemenu` (`id`, `role_id`, `menu_id`) VALUES (3, 1, 3);

COMMIT;

-- ----------------------------

-- Table structure for treemenu

-- ----------------------------

DROP TABLE IF EXISTS `treemenu`;

CREATE TABLE `treemenu` (

 `id` int NOT NULL AUTO_INCREMENT,

 `name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '名称',

 `url` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,

 PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------

-- Records of treemenu

-- ----------------------------

BEGIN;

INSERT INTO `treemenu` (`id`, `name`, `url`) VALUES (1, '首页', '/home');

INSERT INTO `treemenu` (`id`, `name`, `url`) VALUES (2, '控制台', '/console');

COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
试用阿里云云拨测对Web网站的网页性能进行测试并分析
利用分布于全球的监测网络,以真实终端用户使用场景为视角,提供模拟终端用户体验的拨测服务。 可实现对网络质量、页面性能、端口性能、文件传输、音视频体验等场景进行周期性监控,支持多维度分析性能指标。利用可视化性能数据和告警通知可帮助您及时对业务质量作出反应,保证业务稳定正常运行。
94 0
对个人博客系统进行web自动化测试(包含测试代码和测试的详细过程)(下)
对个人博客系统进行web自动化测试(包含测试代码和测试的详细过程)(下)
33 0
对个人博客系统进行web自动化测试(包含测试代码和测试的详细过程)(上)
对个人博客系统进行web自动化测试(包含测试代码和测试的详细过程)(上)
42 0
软件测试|web测试神器playwright简单使用
软件测试|web测试神器playwright简单使用
260 0
浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid
“世界上有那么多城市,城市里有那么多的酒馆,可她,却偏偏走进了我的.....”,这是电影《卡萨布拉卡》中的一句著名独白,投射到现实生活中,与之类似的情况不胜枚举,这世界上有那么多的系统,系统中有那么多的浏览器,在只有一台测试机的前提下,难道我们只能排队一个一个地做兼容性测试吗?有没有效率更高的方法呢?为此我们提出一个更高效的解决方案:使用Docker+Selenium Grid。
126 0
阿萨聊测试 ZAP3:如何测试HTTPS的Web网站?
大家好,我是阿萨。上一次我们介绍了主动扫描以及使用爬虫去做好主动扫描的教程。有些同学就说了, 现在大部分网站都开始使用HTTPS了,如何使用ZAP 来测试HTTPS的网站呢?今天我们就来介绍下HTTPS的扫描。
71 0
全国大学生软件测试大赛Web应用大赛常用测试语句
全国大学生软件测试大赛Web应用大赛常用测试语句
28 0
移动 web 问题 & ;测试 |学习笔记
快速学习 移动 web 问题 & ;测试
50 0
《SpringBoot篇》14.@AutoConfigureMockMvc测试类实现Web层测试
《SpringBoot篇》14.@AutoConfigureMockMvc测试类实现Web层测试
115 0
Go Web 编程入门:一探 GoConvey 测试库(下)
GoConvey 完美兼容 Go 内置的 testing 库,提供命令行工具简化内置的测试执行命令,测试会自动运行,提供更加直观的 Web 界面,最重要的是能够很轻易的得到测试报告。
58 0
+关注
yippee357
666
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
PWA:移动Web的现在与未来
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多