Vue.js/Way Home
[서버에서 데이터 받기] 토큰을 이용해서 이용자의 닉네임 표시하기
Judith Hopps
2022. 10. 17. 19:38
반응형
목표 : 사용자가 로그인을 했을 경우 UI를 다르게 표시한다.
해결 방법 :
1. 토큰을 이용해서 이용자의 닉네임을 localStorage에 저장한다.
nameData = await axios.methods
.$callAPI('POST', 'http://localhost:5000/checktoken',tokenrInformation)
.catch((e) => {
console.log(e);
});
//추후 닉네임으로 수정 필요!
const name: string = nameData.data.result.name;
localStorage.setItem('name', name);
2. Header에서 토큰 유무로 화면이 달라지게 표시한다.
<div class="col-md-3 text-end" v-show="loginTrue()===false">
<div class="col-md-3 text-end" v-show="loginTrue()===true" >
function loginTrue() {
if (localStorage.getItem('token') as string !== "") {
return true
}
else return false
}
3. 로그아웃시 캐시에서 토큰과 닉네임을 제거한다.
<button type="button" class="btn btn-outline-primary me-2" @click="logout">
로그아웃
</button>
function logout() {
localStorage.setItem('token', '');
localStorage.setItem('name', '');
}
4. 이용자의 사진을 누르면 dropdown으로 리스트를 보여준다.
<div class="col-md-3 text-end" v-show="loginTrue()===true" >
{{name}}
<!-- 프로필 사진 기능 -->
<img src ="https://img.icons8.com/pastel-glyph/2x/person-male--v3.png" data-bs-toggle="dropdown" aria-expanded="false">
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">내가 쓴 글 보기</a></li>
<li><a class="dropdown-item" href="#">내가 쓴 댓글 보기</a></li>
<li><a class="dropdown-item" href="#">닉네임 수정</a></li>
<li><a class="dropdown-item" href="#">프로필 사진 수정</a></li>
<div class="dropdown-divider"></div>
<li><a class="dropdown-item" href="#">My page</a></li>
</ul>
5. reroad기능을 이용해서 Header UI를 변경해준다.
window.location.href = "/";
window.location.reload();
반응형