본문 바로가기
기술자료 (KB)/Python

03. Streamlit으로 로그인 페이지와 메인 페이지

by 이완주 2024. 7. 31.

 

 

02. Streamlit으로 AD 인증 오류 처리하기

01. Streamlit으로 AD 인증 페이지 만들기여기서는 Streamlit 기능과 Ldap3 버전을 이용하여 간단하게 인증페이지를 구성해 보았다.  Streamlit 및 python-ldap 설치pip install streamlit python-ldappip install ldap3  로

leemcse.tistory.com

 

위에 로그인 페이지를 만드는 방법 설명

로그인 버튼을 누루면 메인 화면이 나타나고 로그아웃 버튼을 누루면 다시 로그인 페이지가 나타납니다.

 

[결과 화면]

 

[코드설명]

# 전체 구조는 아래와 같습니다.
# 세개의 함수를 만들어 사용

# 인증 처리
def authenticate(server, username, password):

# 메인 페이지
def main_page():

# 로그인 페이지
def login_page():
	# 로그인 페이지에서 인증 정보를 받아 def authenticate 함수를 호출 하여 인증 처리 확인
	# st.session_state['authenticated'] 상태 값을 true 혹은 false로 변경
	# st.rerun() 다시 실행하여 st.session_state['authenticated'] 값을 반영하여 화면을 변경함
	# 세션 상태에 따라 main_page() 혹은 login_page(): 페이지를 불러오게 설정

# 세션 상태 초기화
if 'authenticated' not in st.session_state:
    st.session_state['authenticated'] = False

# 로그인 상태에 따라 페이지 표시
if st.session_state['authenticated']:
    main_page()
else:
    login_page()

 

[소스코드]

import streamlit as st
from ldap3 import Server, Connection, ALL

# 인증 처리
def authenticate(server, username, password):
    try:
        # LDAP 서버에 연결
        conn = Connection(server, user=username, password=password)
          
        if conn.bind():
            return True
        else:
            return False
        
    except Exception as e:
        st.error(f"인증 오류 : {str(e)}")
        return False
    
#main Page 만들기
def main_page():
    if st.button('로그아웃'):
        st.session_state['authenticated'] = False

        # 현재 상태 값을 false로 변경 후 다시 실행하여 화면을 변경함
        st.rerun()

    st.title('Active Directory 메인 페이지')
    st.write("성공적으로 로그인했습니다.")

#login Page 만들기
def login_page():
    st.title('Active Directory 로그인 페이지')
    
    username = st.text_input('로그인 ID')
    password = st.text_input('비밀번호', type='password')
    server = st.text_input('서버 이름 혹은 IP 주소')

    if st.button('로그인'):
        if not username:
            st.error("로그인 ID를 입력하세요.")
        elif not password:
            st.error("비밀번호를 입력하세요.")
        elif not server:
            st.error("서버 이름 혹은 IP를 입력하세요.")
        else:
            if authenticate(server, username, password):
                st.session_state['authenticated'] = True
                
                # 현재 상태 값을 true로 변경 후 다시 실행하여 화면을 변경함
                st.rerun()

            else:
                st.error('로그인 실패')

# 세션 상태 초기화
if 'authenticated' not in st.session_state:
    st.session_state['authenticated'] = False

# 로그인 상태에 따라 페이지 표시
if st.session_state['authenticated']:
    main_page()
else:
    login_page()

 

 

 

04. Streamlit으로 AD 로그인 및 자기 정보 가져오기

03. Streamlit으로 로그인 페이지와 메인 페이지02. Streamlit으로 AD 인증 오류 처리하기01. Streamlit으로 AD 인증 페이지 만들기여기서는 Streamlit 기능과 Ldap3 버전을 이용하여 간단하게 인증페이지를 구

leemcse.tistory.com

 

댓글