첫 메인 화면 $isLogin 인증 부분 궁금한점이 있습니다.
처음 화면에서 http://127.0.0.1:3012 을 호출하면 http://127.0.0.1:3012/articles/all 주소로 자동 이동합니다.
궁금한 점은 articles/all 화면에서 제일 상단에 인증되면 보이는 입력칸이 보입니다.

{#if $isLogin} 으로 조건이 되어도 true 인지 입력칸이 보입니다.
로그아웃 버튼을 누르면 로그인을 하지 않은 첫화면인데 작동이 되어 로그아웃으로 해제 됩니다. 이 부분이 궁금합니다.
<script>
import ArticleHeader from '../components/ArticleHeader.svelte';
import ArticleList from '../components/ArticleList.svelte'
import ArticleAddForm from '../components/ArticleAddForm.svelte'
import Comments from '../pages/Comments.svelte'
import { isLogin } from '../stores'
import { Route } from 'tinro'
</script>
<ArticleHeader />
<main class="slog-main ">
{#if $isLogin}
<ArticleAddForm />
{/if}
<ArticleList />
<Route path="/comments/:id" >
<Comments />
</Route>
</main>
function setIsLogin() {
const checkLogin = derived(auth, $auth => $auth.Authorization ? true : false)
return checkLogin
}
Answer 2
1
인증의경우 한번로그인하면 쿠키에 인증토큰이 저장되었다가 앱을 실행시키면 해당토큰으로 로그인이 확인됩니다
이 과정은 auth스토어의 refresh 부분을 보시면됩니다
그리고 isLogin 스토어는 이 auth 스토어를 참조해서 해당스토어에 로긴정보의 유무를 반응형으로 감지합니다 그래서 로긴정보가 있으면 true 가 되어입력창등을 보여주고 로그아웃이 발생해 auth 스토어가 초기화되면 false가 되어 입력창등이 사라지게 됩니다
이부분은 svelte의 reactivity 즉 반응성으로 작동되는 부분입니다
0
넵 답변 감사합니다. .😍😍😍😍
처음 화면에서 http://127.0.0.1:3012 을 호출하면 http://127.0.0.1:3012/articles/all 주소로 이동하죠. 그 다음 로그인을 하고 작성하다가, 로그아웃을 했습니다.
로그아웃한 상태에서 다시, http://127.0.0.1:3012 로 접속하면 http://127.0.0.1:3012/articles/all 주소로 이동하게 되고 여기서 이상하게 로그아웃된 화면인데도 입력칸이 상단에 보입니다. 그 상태에서 작성하게 되면 인증정보가 없어서 그런지 오류 발생합니다. 입력칸을 보이고 감추는 것은 $isLogin 으로 체크하는 부분을 살펴 봤습니다.
여기서 github 소스에서는 인증쿠기가 담겨져 있는 auth.Authorization 으로 체크한 부분이 있습니다. 이 부분은 로그아웃 해도 계속 남는 현상이 발생해서 id 값으로 교체해 봤습니다.
function setIsLogin() {
const checkLogin = derived(auth, $auth => $auth.Authorization ? true : false)
return checkLogin
}아래와 같이 사용하면 id 값이 undefind 나와서 false 로 표기되어 전체적으로 비인증여부를 체크해주어서 잘된거 같습니다.
function setIsLogin() {
const checkLogin = derived(auth, $auth => $auth.id ? true : false)
return checkLogin
}
로그아웃 로직에는 문제 없어 보이는데요. 왜 authorize 에는 값이 계속 남겨지는지는 미스터리인 사항이네요. 나중에 더 공부해서 찾아보겠습니다.
const logout = async () => {
try {
const options = {
path: '/auth/logout',
}
await delApi(options)
set({...initValues})
isRefresh.set(false)
// router.goto('/')
articlesMode.changeMode(ALL)
}
catch(error) {
alert('오류가 발생했습니다. 다시시도해 주세요')
}
}
0
제가 이번주는 개인사정으러 코드를 보기 힘들어 주말에 다시한번 작동부분을 확인해 보겠습니다
0
일단 위의 문제가 정확히 재현 되지는 않았습니다.
비슷문제가 발생할 수 있는 부분을 조금 확인해 보니 도메인 관련 문제가 아닐가 생각됩니다
백엔드 서버에서 main.js와 services/authService.js에서
다음과 같이 쿠키 생성에서의 domain설정 부분을 127.0.0.1 로 설정하고
fastify.register(fasstifyCookie, {
// domain:'http://localhost/',
domain:'http://127.0.0.1/',
secret: "my-secret", // for cookies signature
hook: 'onRequest', // set to false to disable cookie autoparsing or set autoparsing on any of the following hooks: 'onRequest', 'preParsing', 'preHandler', 'preValidation'. default: 'onRequest'
parseOptions: {} // options for parsing cookies
})
rep.setCookie('refresh_token', refreshToken, {
// domain: 'localhost',
sameSite:'none',
secure: true,
httpOnly: true,
path: '/',
expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 7),
})
그리고 프런트엔드에서도 service/api.js에서도 127.0.01:포트로 해주셔야 합니다.
const send = async ({method='', path='', data={}, access_token=''} = {}) => {
const commonUrl = 'http://127.0.0.1:3000'
// const commonUrl = 'http://localhost:3000'
// const commonUrl = 'http://localhost:3012'
// const commonUrl = 'http://localhost:8089'
const url = commonUrl + path
현재 서버 버전에서는 localhost가 아닌 127.0.0.1 로 접속하면 도메인 문제로 인해 쿠키가 생성되지 않을 수 있는 것 같습니다.
이부분 시도해 보시고 그래도 문제가 있다면 아래 이메일로 코드를 압축해서 보내주시면 따로 확인해 보겠습니다.
freeseamew@gmail.com
스프링부트 서버 에러나요
0
17
1
DDD 는 마이바티스와 잘 맞지 않는건가요?
0
46
1
스프링부트 버전 문의드립니다.
0
38
1
Dto와 Entity 사용 관련 질문
0
31
2
강의 자료 코드
0
39
2
application.properties 작성 관련 질문
0
45
2
cascade 질문
0
39
1
관리자 페이지 상품 삭제 API
1
32
1
@types/bcrypt 설치과정이 누락된것같습니다.
0
48
1
process.env port key 에러
0
46
1
추상화
0
50
1
이미지 처리 라우트 관련 문의
0
67
2
지금 이게 맞는건지 문의드립니다.
0
44
1
프론트 api.js의 요청 headers 옵션의 cors 관련 설정 질문
0
61
2
[npm start 오류나는 분들을 위하여]노드 최신버전 사용하시면 오류가 발생합니다.
0
397
1
[앱 완성도 높이기3 - URL을 통한 보기모드 변경] 로그인 성공 후 라우팅 문제
0
311
1
[앱 완성도 높이기2 - 날짜보기] 타임존 관련 설정 문제
0
1556
1
[보기모드 변경 구현] 코멘트 리스트 조회 후 문제
0
448
2
[보기모드 변경 구현] 좋아요 보기 구현에서 문제 발견
0
423
1
[인증 구현 - 컴포넌트] error 처리 관련 질문
0
392
1
[인증 구현 - store] setAuth 메소드 구현
0
355
1
[스토어 배치] 강의 내용 중 수정이 필요한 부분
0
344
1
[라우터 설정] 강의 내용 중 수정이 필요한 부분
0
576
1
아래와 같은 에러가 발생합니다. ㅜㅜ
0
1245
2

