해결된 질문
작성
·
343
·
수정됨
답변 1
1
토큰 같은 경우는 로그인을 해야만 생성이 됩니다.
그리고 강의 자료를 그대로 다운받아 설치해서 결과를 보시면
아마도 password가 생성이 안되서 로그인 되지 않을 것입니다.
강의 자료 내용은 마지막 챕터 에서 .env라는 것을 이용해서 password를 설정하게 한 부분이 있는데 .nev설정이 되어 있지 않은 상태에서는 그부분이 공백으로 처리되어 password가 정상적으로 작동되지 않습니다.
그래서 만약 중간에 강의 자료를 이용해 실행시키기 위해서는
imports/startup/fixtures.js 를 열고 passowrd에 관한 부분에 설정되어 있는 env관련 부분으 지우고
다음과 같이 수동으로 작성해야 합니다.
그리고 이미 한번 유저가 password없이 생성된 상태라면 유저를 강제로 지우고 서버를 다시 실행해야 새로 유저가 생성이 됩니다.
import { Accounts } from 'meteor/accounts-base';
Meteor.setTimeout(() => {
const userCount = Meteor.users.find().count();
if(userCount === 0) {
console.log('user create');
const userValues = {
email: 'admin@admin.com',
password: '1234', // 이부분에서 env로 설정된 부분을 지우고 직접 초기 패스워드 입력
}
Accounts.createUser(userValues);
}
else {
console.log(`user count: ${userCount}`);
}
}, 3000);
토큰은 로그인을 시도하고 정상적으로 로그인이 되어야 생성이 됩니다.
이부분은 제가 질문을 잘 이해하지 못했습니다. 그러니까 DB에 직접 값을 넣는 것을 말하는지요? 하지만 그렇게 하면 정상적으로작동하지 않을 것입니다. Accounts.createUser를 이용해서 유저를 등록해야 암호화 복호화 과정이 정상적으로 되고 로그인도 가능합니다.
db.users.deleteOne({_id: '_id값'})
추가로 문의 하신 subscription관련된 부분을 좀 확인해 보니 현재 meteor 버전에서는 subscriptions-transport-ws를 이용할 경우 충돌이 일어나고 다운이 되는 것을 확인했습니다. 현재 graphql-ws를 이용한 subscription에 대한 수정코드는 확인했고, 18,19일 중으로 해당 마이그레이션 영상 또는 문서가 준비되는 데로 공개하도록 하겠습니다.
2번 질문은, 강의자료 코드로 서버를 실행시켰을 때, user의 Collection 을 확인하면, 등록된 관리자계정에서는 services 부분에, 암호화 된 비밀번호(bcrypt)가 보이는데,
제가 수업을 보고 진행한(섹션7이라, 모든 수업내용의 코드가 들어가 있지 않은) 코드에서는 암호화된 비밀번호(bcrypt)가 보이지 않습니다.
원래 섹션7에서는 아직 보이지 않는게 맞는건가요?
bcrypt가 보여야한다면 제가 강의를보며 친 코드에 문제가 있다고 생각되어서요.
수업 영상에서는 이렇게 bcrypt 와 loginTokens 부분이 나오는 장면을 보여주시는데,
수업을 따라가는 입장에서는 이 부분들이 안뜨고 있기때문에, 잘 따라가고 있는건지 헷갈리고 있습니다.
3번 질문에 대한 내용은 잘 해결되었습니다.
db.users.deleteOne({_id: '_id값'}) 을 이용해서,
잘 지웠습니다.
remove 도 같은 형식으로 하니 잘 되네요.
//
subscription 에 대한 부분은 아직까지 수업진행에 지장이 있진 않았는데,
나중에 충돌이 발생하는 현상이 있나보군요. 알겠습니다.
일단 user가 등록되었는데 services 에 password가 등록이 안된다는 것은 문제가 있는 것 같습니다.
기본적으로 다음과 같은 코드로 유저를 등록하면 password가 등록이 되어야 합니다.
이부분의 코드를 확인 부탁드리겠습니다.
const userValues = {
email: 'admin@admin.com',
password: '1234',
}
Accounts.createUser(userValues);
"그리고 이미 한번 유저가 password없이 생성된 상태라면 유저를 강제로 지우고 서버를 다시 실행해야 새로 유저가 생성이 됩니다"
라고 하셔서,
기존 생성된 유저를 지우려고 했는데,
이렇게 명령어를 치고 재생버튼을 눌렀는데, 지워지지 않았습니다.
이런 콘솔만 계속 나오더라구요.
그래서 유저를 지우지않고 admin user를 하나 더 만들어보려고,
수업자료 코드에서, 이렇게 하여, admin2 라는 계정을 하나더 만들었는데
password 부분의 암호화 해쉬값이 잘 나오는 것을 확인했습니다.
그러나 로그인 토큰은 보이지 않았습니다. 그것은 로그인이 아직 수업진행상 진행되지 않았기 때문이겠죠?
근데 제 수업을 따라가는 과정에 있는 제 코드에서 같은 작업을 해서 user를 하나 더추가해서 보면
암호화된 비밀번호 해쉬값이 보이지 않습니다.
질문을 요약하면,
수동으로 패스워드를 입력했는데도 토큰이 보이지 않는 이유
수업을 따라가는 과정의 단계에서는 "수동으로" 패스워드 란이 입력되는데,
services 에, 비밀번호 암호화 해쉬값과, 로그인 토큰이 보이지 않는것이 맞는 건지?
(모든 코드가 다 되어있는 강의자료에서는, 수동으로 패스워드를 해줬을 때 암호화해쉬값은 보여짐)
Studio3T에서 user를 지우는 명령어 가 잘못된건지? 유저를 지우는 방법은?
궁급합니다.