基于SpringBoot实现简单的登录功能

  1. 首先先新建一个SpringBoot工程,设置好项目名,选择对应的JDK以及打包方式。点击下一步
  2. 选择对应的依赖项,暂时选了三个,后面增加功能可以在pom文件添加。点击创建。完成后的目录结构
  3. 修改配置文件以及创建三层架构目录。
  4. 接下来完成代码编写。首先登录页面
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div style="text-align: center">
      <h1>登录</h1>
      <form action="/login" method="post">
        <div style="padding: 10px">
        <label for="username">用户名:</label><input id="username" name="username" type="text"><br/>
        </div>
        <div style="padding: 10px;margin-left: 12px">
        <label for="password">密码: </label><input id="password" name="password" type="password"><br/>
        </div>
        <input type="submit" value="登录">
      </form>
    </div>
    </body>
    </html>

    Controller层

    @Controller
    public class UserController {
        @Autowired
        private UserMapper userMap;
        @RequestMapping(value = "/login",method = RequestMethod.POST)
        public String Login(String username, String password){
            if (userMap.loginUser(username, password)!=null){
                return "login";
            }
            else {
                return "index";
            }
        }
    }

    entity层

    @Data
    public class User {
        private Integer id;
        private String username;
        private String password;
    }
    

    mapper层

    @Mapper
    public interface UserMapper {
    
        User loginUser(String username , String password);
    }

    以及

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.cc.demo2.mappers.UserMapper">
        <select id="loginUser" parameterType="User" resultType="User">
            select * from user where username = #{param1} and password = #{param2};
        </select>
    </mapper>
    

    SQL

    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for user
    -- ----------------------------
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user`  (
      `id` int NOT NULL,
      `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
      `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of user
    -- ----------------------------
    INSERT INTO `user` VALUES (1, 'admin', '123456');
    
    SET FOREIGN_KEY_CHECKS = 1;

 5.大功告成,运行一下,浏览器输入localhost:8080,输入对应admin,123456可登录

 如下

 

 至此完成简单的登录功能

 

 

 

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
以下是一个简单的基于 Spring Boot 实现注册登录功能代码示例: 1. 创建 User 实体类 ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, unique = true) private String username; @Column(nullable = false) private String password; // Getter and Setter methods } ``` 2. 创建 UserRepository 接口 ```java @Repository public interface UserRepository extends JpaRepository<User, Long> { User findByUsername(String username); } ``` 3. 创建 UserService 接口和实现类 ```java public interface UserService { User findByUsername(String username); User save(User user); } @Service public class UserServiceImpl implements UserService { @Autowired private UserRepository userRepository; @Override public User findByUsername(String username) { return userRepository.findByUsername(username); } @Override public User save(User user) { return userRepository.save(user); } } ``` 4. 创建 UserController 类 ```java @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserService userService; @PostMapping("/register") public ResponseEntity<?> registerUser(@Valid @RequestBody User user) { if (userService.findByUsername(user.getUsername()) != null) { return ResponseEntity.badRequest().body("Username is already taken"); } user.setPassword(passwordEncoder.encode(user.getPassword())); userService.save(user); return ResponseEntity.ok("User registered successfully"); } @PostMapping("/login") public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginRequest loginRequest) { Authentication authentication = authenticationManager.authenticate( new UsernamePasswordAuthenticationToken(loginRequest.getUsername(), loginRequest.getPassword())); SecurityContextHolder.getContext().setAuthentication(authentication); String jwt = jwtTokenProvider.generateToken(authentication); return ResponseEntity.ok(new JwtAuthenticationResponse(jwt)); } } ``` 5. 创建 LoginRequest 类和 JwtAuthenticationResponse 类 ```java public class LoginRequest { @NotBlank private String username; @NotBlank private String password; // Getter and Setter methods } public class JwtAuthenticationResponse { private String accessToken; public JwtAuthenticationResponse(String accessToken) { this.accessToken = accessToken; } // Getter and Setter methods } ``` 6. 创建 JwtTokenProvider 类 ```java @Component public class JwtTokenProvider { @Value("${jwt.secret}") private String jwtSecret; @Value("${jwt.expiration}") private int jwtExpirationInMs; public String generateToken(Authentication authentication) { UserPrincipal userPrincipal = (UserPrincipal) authentication.getPrincipal(); Date now = new Date(); Date expiryDate = new Date(now.getTime() + jwtExpirationInMs); return Jwts.builder() .setSubject(Long.toString(userPrincipal.getId())) .setIssuedAt(new Date()) .setExpiration(expiryDate) .signWith(SignatureAlgorithm.HS512, jwtSecret) .compact(); } } ``` 7. 配置 Spring Security ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private JwtAuthenticationEntryPoint unauthorizedHandler; @Autowired private UserDetailsService userDetailsService; @Autowired public void configureAuthentication(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception { authenticationManagerBuilder .userDetailsService(userDetailsService) .passwordEncoder(passwordEncoder()); } @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } @Bean public JwtAuthenticationFilter jwtAuthenticationFilter() { return new JwtAuthenticationFilter(); } @Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and() .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() .authorizeRequests() .antMatchers("/api/users/**").permitAll() .anyRequest().authenticated(); http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class); } } ``` 以上是一个简单的基于 Spring Boot 实现注册登录功能代码示例,仅供参考。实际项目中可能需要进行更多的优化和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值