用springboot实现登录注册功能代码
时间: 2023-09-11 17:04:56 浏览: 52
很高兴回答您的问题!以下是一个用Spring Boot实现登录注册功能的简单代码示例:
```
// 登录接口
@PostMapping("/login")
public String login(@RequestParam String username, @RequestParam String password) {
// 根据用户名和密码校验用户信息
if (username.equals("admin") && password.equals("123456")) {
return "Login success!";
} else {
return "Username or password is incorrect!";
}
}
// 注册接口
@PostMapping("/register")
public String register(@RequestParam String username, @RequestParam String password) {
// 根据需求实现用户注册逻辑
return "Register success!";
}
```
希望能帮到您!如果您有更多问题,请随时问我。
相关问题
用springboot实现注册登录功能的代码
以下是一个简单的基于 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 实现注册登录功能的代码示例,仅供参考。实际项目中可能需要进行更多的优化和改进。
springboot实现登录注册的代码
好的,我可以为您提供一个简单的示例代码来实现Spring Boot中的登录注册功能。首先,您需要创建一个名为“User”的实体类,以便存储用户的信息,包括用户名和密码。这里是一个样例代码:
```java
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String username;
private String password;
// getters and setters
}
```
然后,您需要创建一个名为“UserController”的控制器类,以处理用户登录注册的请求。这里是一个样例代码:
```java
@RestController
@RequestMapping("/api")
public class UserController {
@Autowired
private UserService userService;
// 注册用户
@PostMapping("/register")
public void registerUser(@RequestBody User user) {
userService.save(user);
}
// 用户登录
@PostMapping("/login")
public ResponseEntity<?> loginUser(@RequestBody User user) {
String token = userService.login(user.getUsername(), user.getPassword());
if(token != null) {
return ResponseEntity.ok(token);
} else {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
}
}
}
```
在上面的代码中,UserService使用Spring Security来为用户提供登录功能。您需要实现UserService类,并在其中添加一个login()方法来处理用户登录请求。这里是一个示例代码:
```java
@Service
public class UserService {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private JwtTokenProvider jwtTokenProvider;
@Autowired
private UserRepository userRepository;
public void save(User user) {
userRepository.save(user);
}
public String login(String username, String password) {
try {
authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, password));
return jwtTokenProvider.createToken(username, userRepository.findByUsername(username).getRoles());
} catch (AuthenticationException e) {
return null;
}
}
}
```
这里使用了JwtTokenProvider类来创建JSON Web Token(JWT),用于在服务器和客户端之间进行身份验证。该类还需要获取用户的角色信息,从而将其添加到JWT中。您需要创建一个名为“JwtTokenProvider”的类,并实现其方法。这里是一个示例代码:
```java
@Component
public class JwtTokenProvider {
@Value("${jwt.secret}")
private String secretKey;
@Value("${jwt.expiration}")
private long validityInMilliseconds;
@Autowired
private UserDetailsService userDetailsService;
@PostConstruct
protected void init() {
secretKey = Base64.getEncoder().encodeToString(secretKey.getBytes());
}
public String createToken(String username, List<Role> roles) {
Claims claims = Jwts.claims().setSubject(username);
claims.put("auth", roles.stream().map(s -> new SimpleGrantedAuthority(s.getAuthority()))
.filter(Objects::nonNull).collect(Collectors.toList()));
Date now = new Date();
Date validity = new Date(now.getTime() + validityInMilliseconds);
return Jwts.builder().setClaims(claims).setIssuedAt(now).setExpiration(validity)
.signWith(SignatureAlgorithm.HS256, secretKey).compact();
}
public Authentication getAuthentication(String token) {
UserDetails userDetails = this.userDetailsService.loadUserByUsername(getUsername(token));
return new UsernamePasswordAuthenticationToken(userDetails, "", userDetails.getAuthorities());
}
public String getUsername(String token) {
return Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody().getSubject();
}
}
```
最后,您需要创建一个名为“UserRepository”的JPA仓库类,用于与数据库交互。这里是一个示例代码:
```java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
```
希望这个示例代码可以帮助到您完成Spring Boot的登录注册功能。如果您有更多的问题,请告诉我,我会尽力回答。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)