https://velog.io/@yerimii11/Project-%EB%82%98%EB%A7%8C%EC%9D%98-%EB%AC%B4%EA%B8%B0-%ED%9A%8C%EA%B3%A0-02.10-%EB%AA%A9-D-30 2022년 2월 11일에 작성된 게시글 아카이브입니다. (사유: 블로그이전)
📖 02.10 목요일
1. 공부 진행 상황
- 데모때 중요한 것은 로그인부터 차근차근~ 보다는 팀 프로젝트의 핵심 기능을 소개하는 것이라 판단되어 백팀 진행 순서를 최대한 빨리 핵심 기능 먼저 보이게 하는 쪽으로 수정했다.
- 구글로그인 구현 → 서버 열고 DB 연동 → 방들과 연동 순으로 진행
- google.js 전체 코드 이해하기!
- 쿼리 작성법, mysql DB에 연동하는 코드, 콜백 쓰는 방법
- 세션을 저장하는 함수. passport.serializeUser
- (Node.js) Serialize 와 Deserialize 로그인 정보 저장
- 라스트 오늘 할 일
- S3내 맵 이미지 업로드 (민수)
- DB 설계 및 입력 : S3 맵 파일 주소
- 브라우저 이미지 요청시 불러오는거까지 확인
- Algorithm 내일은 꼭 풀자 !!!!
2. 기술적 고민
- 팀 Git 버전 관리
- 한 명이 초기 환경 세팅(npm설치 등) 후 push, pull로 설정 완료
- 이후 npm설치 시 -s, —-save 꼭 하고, 타인은 npm install 로 받아오면 됨.
새로운 모듈 설치시 서로 말 해주기
- DB를 여럿이서 관리하려면 깃 연동을 어떤 식으로 해야하지?
- 워크벤치에서 아이디 같이 쓰면 된다고 함.
- ec2 열고 → 워크벤치에서 해당 ip주소 적고 접속
- 구글 로그인 연동해서 들어온 정보들 중에 있는 email주소 + 다음 페이지에서 제출되는 닉네임을 우리 DB에 연결해와서 저장하려면?
- 이메일 : 쿼리문을 작성해서 구글 정보에서 바로 테이블로 보낸다.
보낼 때 if문+SELECT로 먼저 이메일이 DB에 들어있는지 확인한 후, 들어있으면 에러, 길이가 0이면(이메일 들어온게 없으면) → 세션id와 이메일 주소를 DB에 올린다. - 세션id를 같이 올리는 이유 : 로그인에 성공하면 세션테이블에 세션id가 저장되는데, 이걸로 닉네임 입력 페이지에서 입력되는 닉네임이 누가 입력한 닉네임인지 비교해서 해당 유저의 닉네임으로 유저DB에 올리기 위함.
- 쿼리문 참고1
- 이메일 : 쿼리문을 작성해서 구글 정보에서 바로 테이블로 보낸다.
passport.use(
new GoogleStrategy(
{
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: "http://localhost:3000/auth/google/callback",
passReqToCallback: true,
},
function (request, accessToken, refreshToken, profile, done) {
db.query('SELECT * FROM aim_user_info WHERE email=?', [profile.email], function(error, result){
if (error) {
throw error;
}
if (result.length === 0) {
db.query('INSERT INTO aim_user_info (session_id, email) VALUES(?,?)', [request.session.passport.user, profile.email], function(error2, result){
if (error2) {
throw error2;
}
});
}
});
// console.log(profile);
// console.log(accessToken);
return done(null, profile);
}
)
);
- 쿼리문 참고2
app.post('/sendNickname', (req, res) => {
let post = req.body;
let session_id = req.session.passport.user;
db.query('UPDATE aim_user_info SET nickname=? WHERE session_id=?', [post.nickname, session_id], function(error, result){
if (error) {
throw error;
}
});
// console.log('Got body:', req.body);
res.sendStatus(200);
});
- 데이터베이스 테이블을 어떻게 짤지 정함. 2D 픽셀 특성상, 캐릭터의 이동좌표를 하나하나 저장해둬야 한다. 아마 마지막 좌표를 저장할 듯
- S3에 이미지를 올린 후 받아온 url → DB저장 → 웹페이지로 불러오기 작성 완료
- 🍰) 세션id가 DB에서 삭제 후에도 같은 id로 나온다. 세션은 만료되는 것 아닌가?
해당 부분이 null이라서? 근데 쿠키랑 관련있나? 나중에 시간 날 때 고려해볼 것.
세션 유효 시간이 있다면 만료 후에도 이 때와 같은 id를 받을지 볼 것
3. 성찰
- 점심 전에 못 나올거면 너무 무리해서 늦게까지 하지 말자. 출근시간 마지노선을 지키자
- 코치님 : 하루하루 목표로 완성할 기능을 설정해라.
- 나는 무슨 기능을 구현할 수 있을까? 찾아내고, 해내자.
'SW Jungle [예림] > Project' 카테고리의 다른 글
[Project 나만의 무기] - 회고 02.14~17 D-26~중간발표 (1) | 2022.12.30 |
---|---|
[Project 나만의 무기] - 회고 02.13 일 D-27 (1주차 끝) (0) | 2022.12.30 |
[Project 나만의 무기] - 회고 02.12 토 D-28 (0) | 2022.12.30 |
[Project 나만의 무기] - 회고 02.11 금 D-29 (0) | 2022.12.30 |
[Project 나만의 무기] - 회고 02.09 수 D-31 (0) | 2022.12.30 |
댓글