Masonite Framework 및 JSON 웹 토큰을 사용하여 처음부터 이메일 확인 구축
이 튜토리얼에서는 Masonite 애플리케이션에 대한 이메일 확인을 처음부터 작성하는 방법을 보여드리겠습니다.
Masonite는 Craft라는 CLI 도구와 함께 제공됩니다. Craft는 간단한 명령을 사용하여 인증에 필요한 것을 스캐폴드하는 쉬운 방법을 제공합니다.
$ craft auth
위의 명령은 인증에 필요한 모든 것(4개의 새 컨트롤러, 5개의 새 템플릿 및 6개의 새 경로)을 생성합니다. 따라서 사용자 이메일 확인을 처리하고 이메일의 유효성을 검사하려고 합니다. 우리는 거기에 갈!
새로운 Masonite 프로젝트 생성 및 스캐폴드 인증
$ pipenv install masonite-cli
$ craft new masonite-app-with-user-verification
$ cd masonite-app-with-user-verification
$ craft install
$ craft auth
데이터베이스 설정
사용자를 등록하려면 데이터베이스가 필요합니다. MySQL 데이터베이스를 사용합시다.
$ pipenv install PyMySQL
새 데이터베이스를 만들고 데이터베이스 자격 증명을 .env 파일에 넣습니다.
DB_DRIVER=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=masonite
DB_USERNAME=root
DB_PASSWORD=root
사용자 모델에 '활성' 속성 추가
새 마이그레이션을 생성해 보겠습니다.
$ craft migration add_active_to_users_table --table=users
그런 다음 새 활성 속성을 추가합니다.
from orator.migrations import Migration
class AddActiveToUsersTable(Migration):
def up(self):
with self.schema.table('users') as table:
table.boolean('active').default(False)
def down(self):
with self.schema.table('users') as table:
table.drop_column('active')
마이그레이션 적용 😄
$ craft migrate
이메일 확인에 JWT를 사용하는 이유는 무엇입니까?
JSON Web Tokens은 당사자 간에 정보를 안전하게 전송하는 좋은 방법입니다.
이메일 확인을 위해 등록된 사용자에게 임의의 해시를 보내야 합니다.
등록 시 새 jwt 토큰 생성
Python에서 JSON 웹 토큰 구현을 사용해야 합니다.
$ pipenv install PyJWT
그 다음에
data = {'email': user.email}
encoded = jwt.encode(data, os.environ.get('KEY'), algorithm='HS256')
token = str(encoded, 'utf-8')
이제 메일을 보내야 합니다. Masonite는 이를 수행하는 데 도움이 되는 패키지 호출notification을 제공합니다.
$ pipenv install masonite-notifications
이메일 확인을 위한 알림을 만들어 봅시다.
$ craft notification EmailVerificationNotification
알림은 인증 토큰이 포함된 링크가 포함된 이메일을 보내야 합니다.
from notifications import Notifiable
class EmailVerificationNotification(Notifiable):
def mail(self):
return self.subject('New account signup!') \
.driver('smtp') \
.heading('Masonite App With User Verification') \
.line('In order to use your account, you have to validate your email address.') \
.line('Please click on the link below.') \
.action('Validate my account', href=self._link)
나쁘지 않다.
그런 다음 해당 이메일을 사용자에게 보냅니다.
if token:
Notify.mail(EmailVerificationNotification, to=user.email, link='http://localhost:8000/activate/{0}'.format(token))
Session.flash(‘success’, ‘Almost done! Please check your email to complete the registration process.’)
return Request.redirect(‘/login’)
smtp 자격 증명이 정확하면 메일에 다음과 같이 표시됩니다.
이메일 확인을 위한 경로 만들기
get('/activate/@token', 'RegisterController@validate')
사용자 모델에서 채울 수 있는 속성 '활성화' 정의
class User(Model):
__fillable__ = ['name', 'email', 'password', 'active']
사용자 확인
def validate(self, Request):
if Request.param('token'):
data = jwt.decode(Request.param('token'), os.environ.get('KEY'), algorithms=[‘HS256’])
user = User.where('email', data['email']).first()
if user:
user.active = True
user.save()
Session.flash('success', 'You\'re in! Let\'s login!')
return Request.redirect('/login')
마지막 것! 로그인 사용자:
def store(self, Request, Session):
user = User.where('email', Request.input('email')).first()
if user.active:
if Auth(Request).login(Request.input('email'), Request.input('password')):
return Request.redirect('/home')
return Request.redirect('/login')
else:
Session.flash('warning', 'Please check your email to complete the registration process.')
return Request.back()
이제 사용자가 확인되었습니다 🔥
이 물건을 Masonite 패키지 안에 풀어 놓겠습니다. 패키지 개발에 기여하고 싶거나 Masonite 개발에 관심이 있는 경우 반드시 Slack channel에 가입하거나 저장소GitHub에 별표를 표시하십시오.
추가 토론을 위해 자유롭게 의견을 추가하십시오. 이 자습서의 전체 코드는 Github에서 사용할 수 있습니다. 감사!
Reference
이 문제에 관하여(Masonite Framework 및 JSON 웹 토큰을 사용하여 처음부터 이메일 확인 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nioperas06/build-email-verification-from-scratch-with-masonite-framework-and-json-web-tokens-mf7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)