티스토리 뷰
1. 회원가입,로그인,로그아웃 기능
- auth.service
const API_URL = "http://localhost:8080/api/auth/";
class AuthService {
register(username, email, password) {
return axios.post(API_URL + "signup", {
username,
email,
password
});
}
}
- spring boot 서버에 넘겨주기 위해 API_URL를 알맞게 설정하고 username, email, password를 값을 post를 보내준다. 이 때 통신을 하기 위해서 axios 썼다. 서버에서는 중복값 체크를 한다.
login(username, password) {
return axios
.post(API_URL + "signin", {
username,
password
})
.then(response => {
if (response.data.accessToken) {
localStorage.setItem("user", JSON.stringify(response.data));
}
return response.data;
});
}
- 서버에서 username, password 보낸 뒤 DB에 값이 있으면 Jwt 토큰을 반환한다. accessToken이 있다면 사용자의 localStorage("user", value) 값을 넣어주고 데이터를 return 한다.
logout() {
localStorage.removeItem("user");
}
getCurrentUser() {
return JSON.parse(localStorage.getItem('user'));
}
- logout 버튼을 누르게 되면 localstorage 값을 사라진다.
- 일반유저, 관리자, 중재자 권한을 파악하기 위해 CurrentUser( ) 추가한다.
2. 권한 제어
- user.service
const API_URL = 'http://localhost:8080/api/role/';
class UserService {
authHeader() {
const user = JSON.parse(localStorage.getItem('user'));
if (user && user.accessToken) {
return { Authorization: 'Bearer ' + user.accessToken };
} else {
return {};
}
}
getPublicContent() {
return axios.get(API_URL + 'all');
}
getUserBoard() {
return axios.get(API_URL+'user',{headers: authHeader()});//Authorization: 'Bearer' + user.accessToken
}
getModeratorBoard() {
return axios.get(API_URL + 'mod', { headers: authHeader() });
}
getAdminBoard() {
return axios.get(API_URL + 'admin', { headers: authHeader() });
}
}
- authHeader( )에 사용자의 jwt 토큰을 가져와서 리턴 값으로 Bearer+accessToken 보낸다.
- axois.get으로 각 연결된 경로를 통해 서버의 값을 가져온다.
'∙React + Spring' 카테고리의 다른 글
spring boot JWT 인증 #4 (Controller) (0) | 2021.08.17 |
---|---|
spring boot JWT 인증 #3 ( 비인증, 필터, JWT 생성) (0) | 2021.08.17 |
spring boot JWT 인증 #2 (model, repository, userDetails, configAdapter) (0) | 2021.08.17 |
spring boot JWT 인증 #1 (0) | 2021.08.17 |