rails에서 로그인 기능을 넣을때 베스트 프랙티스가 있나요?
조회수 1951회
로그인/회원가입 기능을 넣어보고 있습니다
devise 라는 젬을 사용하려다가 초보자는 추천을 안한다 하길래 직접 해보려고 합니다
로그인부분 로직을 /login 에 GET, POST를 허용하는 방식으로 구성하고 있는데 여기서 궁금한게 생겼습니다
예를들어 login 이라는 메소드 한개에
def login
# GET 일때만 그냥 렌더링
if request.post?
# POST 요청시 로그인 로직처리
end
end
이렇게 처리하는게 좋을까요? 아니면
def login
# GET 일때만 폼 렌더링
end
def login_logic
# login 에서 폼 서브밋할때 여기로 와서 로그인 로직 처리
end
이렇게 처리하는게 좋을까요?
중요한점은 url은 /login 으로 고정이고 단지 로그인 로직처리를
- 그 메소드에서 get은 렌더링 post는 로직처리
- 아니면 login 메소드는 렌더링 login_logic 은 로그인 처리 ( url은 동일 )
이렇게 할뿐입니다
레일즈 가이드에선 한 메소드에 여러 HTTP 메소드를 적용하면 좋지않다고 본것같은데 아래와 같이 하자니 코드가 또 길어져서 보기가 싫습니다
어떤방식이 괜찮을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
두번째 방법이 맞는것 같습니다.
Get에서는 로그인 폼을 그려주고, Post는 로그인 처리 하시려는거겠져?
두개는 명확히 다른 동작이기 때문에 하나의 메소드에서 if문으로 depth가 깊어지는것 보다는 두개의 메소드로 분리하는게 좋겠네요.
연습을 위해 이런 기능들을 구현해 보시는건 좋지만 가장 좋은 Best practice는 devise를 쓰는거라고 생각해요.
-
정두식님 의견처럼 GET POST 두개의 Action으로 나누는 것이 좋다고 생각합니다.
덧붙이자면, RailsTutorial (https://www.railstutorial.org/book/log_in_log_out) 의 8장에 보면 로그인 및 로그아웃 기능 구현에 대한 설명이 있습니다. 영어여서 짜증나긴 하지만 참고하세요^ (첨부된 코드만 봐도 어느정도 이해는 됩니다)
저도 연습이 아니시라면 Devise Gem을 사용하시는 것을 추천합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력