
: 사용자의 id(username), pw(password)를 입력 받고, 실제 DB에 등록되어 있는지 확인한 뒤에 Login 성공 여부를 보여준다.
<!DOCTYPE html>
<html>
<head>
<title>login page</title>
</head>
<body>
login page입니다.
<div>
<p>username</p>
<input type = "text" id = "login_username">
</div>
<div>
<p>password</p>
<input type = "text" id = "login_password">
</div>
<button onclick="login()">로그인</button>
<script>
function login(){
alert($("#login_username").val());
alert($("#login_password").val());
$.ajax({
url : "/api/user/login",
type : "GET",
contentType : 'application/json; charset=utf-8',
data : {
username : $("#login_username").val(),
password : $("#login_password").val(),
},
cache : false,
success : (obj_data, status, xhr) => {
const name = obj_data.username;
if(obj_data.result == "login_fail_username"){
alert("잘못된 아이디입니다");
}
if(obj_data.result == "login_fail_password"){
alert("잘못된 비밀번호입니다");
}
if(name != undefined){
alert(JSON.stringify(obj_data.username) + "님 반갑습니다.");
}
},
error: (obj_data, status, error) => {
alert("로그인 실패!!");
alert(JSON.stringify(obj_data));
}
})
}
</script>
<script src="https://code.jquery.com/jquery-3.7.1.js" integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=" crossorigin="anonymous"></script>
</body>
</html>
= username, password를 입력하는 form을 제작한다.
package com.example.demo.service;
import com.example.demo.domain.User;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public interface UserService {
Map<String, Object> create(Map<String, Object> params);
User update(Map<String, Object> params);
List<User> list();
User detail(Integer id);
User delete(Integer id);
Map<String, Object> login(Map<String, Object> params);
}
: 로그인 관련 로직을 처리해주는 method를 만들어준다.
@Override
public Map<String, Object> login(Map<String, Object> params) {
User user = null;
Map<String, Object> result = new HashMap<String, Object>();
String username = (String) params.get("username");
user = userRepository.findByUsername(username);
if(user == null){
result.put("result", "login_fail_username");
return result;
}
String password = (String) params.get("password");
System.out.println(user.getPassword().equals((password)));
if(user.getPassword().equals((password)) == false){
result.put("result", "login_fail_password");
return result;
}
System.out.println("result : " + user.getName());
if(user != null){
result.put("username", user.getUsername());
result.put("password", user.getPassword());
result.put("name", user.getName());
result.put("phone", user.getPhone());
result.put("result", "로그인 성공");
} else {
result.put("id duplicated", user.getId());
}
return result;
}
: 사용자가 입력한 username 정보를 가지고 findByUsername 메소드를 통해 user의 존재 유무를 확인한다.
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
User findByUsername(String username);
User findByPassword(String password);
}
: JPA를 통해서 위와 같은 메소드를 명시만 해도 사용할 수 있다.
@GetMapping({"/login"})
public Map<String, Object> login(@RequestParam Map<String, Object> params) {
return userService.login(params);
}
: /api/user/login의 경로로 api 호출이 들어오면, userService의 Login 메소드를 제공한다.
: 원하는 기능이 있을 경우 아래와 같이 진행하면 된다.
@GetMapping({"/login"})
public Map<String, Object> login(@RequestParam Map<String, Object> params) {
return userService.login(params);
}