웹 애플리케이션 개발 시 로그인과 인증은 매우 중요한 부분입니다. 웹 애플리케이션 사용자를 식별하고 인증하여 보안과 접근 제어를 강화할 수 있습니다. web2py는 파이썬으로 작성된 웹 프레임워크로, 로그인과 인증에 대한 기능을 내장하고 있어 개발자들이 편리하게 사용할 수 있습니다.
로그인 폼 추가하기
먼저, 로그인 폼을 뷰 파일에 추가해보겠습니다. views/default/login.html
파일을 열고 다음 코드를 추가합니다.
<h2>로그인</h2>
<form method="post" action="{{=URL('default', 'login')}}">
<p>
<input type="text" name="username" placeholder="사용자명" required>
</p>
<p>
<input type="password" name="password" placeholder="비밀번호" required>
</p>
<p>
<input type="submit" value="로그인">
</p>
</form>
이 폼은 사용자명과 비밀번호를 입력받아 default
컨트롤러의 login
액션으로 POST 요청을 보내도록 설정되어 있습니다.
로그인 처리하기
로그인 폼을 추가했으니 이제 default
컨트롤러에 login
액션을 추가하고, 입력된 사용자명과 비밀번호를 검증하는 코드를 작성해보겠습니다. controllers/default.py
파일을 열고 다음 코드를 추가합니다.
def login():
form = SQLFORM.factory(
Field('username', requires=IS_NOT_EMPTY()),
Field('password', 'password', requires=IS_NOT_EMPTY())
)
if form.process().accepted:
username = form.vars.username
password = form.vars.password
# 사용자명과 비밀번호를 검증하는 로직 추가
redirect(URL('default', 'home'))
elif form.errors:
response.flash = '로그인에 실패하였습니다.'
return dict(form=form)
이 코드에서는 SQLFORM.factory()
함수를 사용하여 로그인 폼의 필드를 생성하고, 입력값에 대한 유효성 검사를 수행합니다. 그리고 폼이 제출되었을 때는 입력된 사용자명과 비밀번호를 검증하여 로그인 처리 로직을 추가하면 됩니다. 이 예시에서는 로그인이 성공하면 home
액션으로 리디렉션합니다.
세션을 이용한 인증 처리하기
로그인 성공 후에는 사용자를 식별하기 위해 세션을 활용합니다. 세션은 서버 측에 사용자 정보를 저장하여 인증 처리를 유지하는 데 사용됩니다. web2py는 세션 관리를 위한 내장 기능을 제공합니다.
로그인 성공하면 사용자 정보를 세션에 저장하고, 이후 페이지에 접근할 때마다 세션의 인증 여부를 확인하여 인증(로그인)된 사용자만 접근할 수 있도록 처리해야 합니다.
def login():
form = SQLFORM.factory(
Field('username', requires=IS_NOT_EMPTY()),
Field('password', 'password', requires=IS_NOT_EMPTY())
)
if form.process().accepted:
username = form.vars.username
password = form.vars.password
# 사용자명과 비밀번호를 검증하는 로직 추가
# 사용자가 인증되면 세션에 사용자 정보 저장
session.authenticated = True
session.username = username
redirect(URL('default', 'home'))
elif form.errors:
response.flash = '로그인에 실패하였습니다.'
return dict(form=form)
def home():
# 세션에 인증된 사용자 정보가 있는지 확인
if not session.authenticated:
redirect(URL('default', 'login'))
# 인증된 사용자만 접근 가능한 로직 추가
return {}
로그인 성공 후 세션에 authenticated
와 username
정보를 저장하고, home
액션에서 세션 정보를 확인하여 인증된 사용자만 접근 가능하도록 처리합니다. 만약 인증되지 않은 사용자가 직접 home
페이지에 접근하면 로그인 페이지로 리디렉션됩니다.
이제 web2py에서 간단한 로그인 및 인증 기능을 구현하는 방법을 알게 되었습니다. 이를 기반으로 더 복잡한 인증 절차를 구현하거나, 사용자 권한 관리 등을 추가할 수도 있습니다. web2py의 강력한 기능을 활용하여 보안과 접근 제어의 품질을 향상시키세요.