rails에서 로그인 기능을 넣을때 베스트 프랙티스가 있나요?


로그인/회원가입 기능을 넣어보고 있습니다

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 으로 고정이고 단지 로그인 로직처리를

  1. 그 메소드에서 get은 렌더링 post는 로직처리
  2. 아니면 login 메소드는 렌더링 login_logic 은 로그인 처리 ( url은 동일 )

이렇게 할뿐입니다

레일즈 가이드에선 한 메소드에 여러 HTTP 메소드를 적용하면 좋지않다고 본것같은데 아래와 같이 하자니 코드가 또 길어져서 보기가 싫습니다

어떤방식이 괜찮을까요?

  • 2016년 03월 30일에 작성됨
    웹을 좋아함

조회수 296


2 답변


좋아요
1
싫어요
채택취소하기

두번째 방법이 맞는것 같습니다.

Get에서는 로그인 폼을 그려주고, Post는 로그인 처리 하시려는거겠져?

두개는 명확히 다른 동작이기 때문에 하나의 메소드에서 if문으로 depth가 깊어지는것 보다는 두개의 메소드로 분리하는게 좋겠네요.

연습을 위해 이런 기능들을 구현해 보시는건 좋지만 가장 좋은 Best practice는 devise를 쓰는거라고 생각해요.

  • 2016년 06월 01일에 수정됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.
  • 2016년 03월 30일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.


정두식님 의견처럼 GET POST 두개의 Action으로 나누는 것이 좋다고 생각합니다.

덧붙이자면, RailsTutorial (https://www.railstutorial.org/book/log_in_log_out) 의 8장에 보면 로그인 및 로그아웃 기능 구현에 대한 설명이 있습니다. 영어여서 짜증나긴 하지만 참고하세요^ (첨부된 코드만 봐도 어느정도 이해는 됩니다)

저도 연습이 아니시라면 Devise Gem을 사용하시는 것을 추천합니다.

  • 2016년 04월 02일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close