경완
[ReactNative] Auth / 로그인, 로그아웃 구현하기 본문
요약
1. AsyncStorage 를 사용해서 기기에 로그인 정보를 저장합니다.
2. 토큰을 검증하고 유효한 토큰이 있다면 자동으로 로그인합니다.
3. 토큰이 없다면 로그인 화면으로 넘어갑니다.
LoginPage -> 로그인 화면입니다.
Splash -> 로그인이 되어있는지 검증하는 페이지입니다(로딩 페이지)
VerifyToken -> 토큰을 검증하는 등의 메소드가 들어있는 파일입니다
LoginPage.js
import { View, Text, StyleSheet,Image, Dimensions, TouchableOpacity } from 'react-native';
import { getTokens } from './VerifyToken';
const test_login = ( num, nav ) =>{
getTokens('test'+num+'@test.com', 1234, nav);
}
function LoginPage({navigation}) {
return (
<View style={styles.body}>
<Image ...
개발 중 테스트를 위해 테스트 계정을 사용했습니다.
./VerifyToken.js 파일에서 토큰을 검증하는 getTokens() 메소드를 가져을 가져와, 임시 로그인을 구현합니다.
* 로그인 기능 구현에 관해서는 https://tae-jun.tistory.com/20 의 글을 참고했습니다.
VerifyToken.js
import axios from "axios";
import AsyncStorage from '@react-native-async-storage/async-storage'
const URL = 'http://서버IP:포트'
export const getTokens = (email, password, navigation) => {
axios.post(`${URL}/login`,
{
"userEmail": email,
"userPassword": password
})
.then(res =>{{
//accessToken, refreshToken 로컬에 저장
if (res.status === 200){
AsyncStorage.setItem('user', JSON.stringify({
'accessToken': res.data.accessToken,
'refreshToken': res.data.refreshToken,
'userEmail': email
}))
navigation.replace('Splash');
}
}})
.catch(error =>{
if(error.response.status === 401){
console.log(error.response.data)
}
else{
console.log("알수 없는 오류")
}
})
};
...
로그인을 시도하고 토큰을 발급하는 코드입니다.
로그아웃도 같은 방식으로 AsyncStorage를 활용하여 코딩하면 됩니다.
'code&design > 오류 해결' 카테고리의 다른 글
[xcode] std::char_traits<unsigned char> (0) | 2025.04.15 |
---|---|
[react-native] IOS 환경에서 Input클릭 시 화면 확대되는 현상 (1) | 2025.02.07 |
[ReactNative] ios/ xcode에서 release모드로 빌드 시 앱이 paused되는 현상 (0) | 2024.04.29 |
[ReactNative] xcode 빌드 시 googlemap 관련 오류 해결법 총정리 (0) | 2024.04.26 |
[ReactNative] pointerEvents, 자식만 클릭 가능하게 하기 (0) | 2024.02.27 |