Implement authenticated function

This commit is contained in:
myh 2023-12-10 22:52:44 +08:00
parent fbaee8aa4c
commit 21fe0db209
3 changed files with 64 additions and 0 deletions

View File

@ -0,0 +1,28 @@
package com.example.springdemo.controller;
import com.example.springdemo.security.dto.JwtAuthResponse;
import com.example.springdemo.security.dto.LoginDto;
import com.example.springdemo.service.AuthService;
import jakarta.annotation.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/auth")
public class AuthController {
@Resource
private AuthService authService;
// Login REST API
@PostMapping("/login")
public ResponseEntity<JwtAuthResponse> authenticate(@RequestBody LoginDto loginDto) {
String token = authService.login(loginDto);
JwtAuthResponse jwtAuthResponse = new JwtAuthResponse(token);
return ResponseEntity.ok(jwtAuthResponse);
}
}

View File

@ -0,0 +1,7 @@
package com.example.springdemo.service;
import com.example.springdemo.security.dto.LoginDto;
public interface AuthService {
String login(LoginDto loginDto);
}

View File

@ -0,0 +1,29 @@
package com.example.springdemo.serviceImpl;
import com.example.springdemo.security.dto.LoginDto;
import com.example.springdemo.security.utils.JwtTokenProvider;
import com.example.springdemo.service.AuthService;
import jakarta.annotation.Resource;
import org.jetbrains.annotations.NotNull;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
public class AuthServiceImpl implements AuthService {
@Resource
private AuthenticationManager authenticationManager;
@Resource
private JwtTokenProvider jwtTokenProvider;
@Override
public String login(@NotNull LoginDto loginDto) {
Authentication authentication = authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(loginDto.getUsername(), loginDto.getPassword())
);
SecurityContextHolder.getContext().setAuthentication(authentication);
return jwtTokenProvider.generateToken(authentication);
}
}