django_openstack_auth 원본 분석 및 통합

2328 단어 djangoopenstack
전언
최근에 비교적 간단한 WEB 앱을 만들어서 오픈스테이크의 간단한 내용을 보여 주었는데 인증은 항상 통합되어야 한다. 다음djangoopenstack_auth 구성 요소, 그 자체는django 응용 프로그램의 인증 백엔드로서 통합할 수 있습니다.
통합
공식 문서를 뒤적거렸을 때 먼저 몇 가지 구성과 설치를 간단하게 할 수 있습니다.
Run pip install django_openstack_auth.
Add openstack_auth to settings.INSTALLED_APPS.
Add ‘openstack_auth.backend.KeystoneBackend’ to your settings.AUTHENTICATION_BACKENDS, e.g.:
AUTHENTICATION_BACKENDS = (‘openstack_auth.backend.KeystoneBackend’,) Configure your API endpoint(s) in settings.py:
OPENSTACK_KEYSTONE_URL = “http://example.com:5000/v3” Include ‘openstack_auth.urls’ somewhere in your urls.py file.
Use it as you would any other Django auth backend. 이 절차는 매우 간단하다. 주로 페이지가 어떻게 집적되어야 하는가?오픈스택을 보시면...auth 원본 urls.py
 url(r"^login/$", "login", name='login'),
 url(r"^logout/$", 'logout', name='logout'),

URL 주소가 있는 것을 볼 수 있습니다.views로 들어가십시오.py는 login 방법을 보고 대체적으로 다음과 같다.
Created with Rapha l 2.1.0 POST 시작 및 SSO?SSO 로그인 끝 처리regions 그룹form 그룹template(auth/login.html) 호출login(X) 저장session yes no
스스로 auth/login을 준비해야 한다는 것을 알 수 있습니다.html 템플릿, 그래서 템플릿을 썼는데 그 안에 FORM을 어떻게 썼을까요? 처음에 스스로 FORM을 썼고username 등 속성을 썼는데post에 따라auth/login에 로그인하지 못했습니다.곰곰이 생각해 보면 이런 절차도 옳지 않은 것 같고form과는 전혀 관련이 없고 절차에 문제가 있다.그래서 TEST의 예를 보고 문득login에서 깨달았다.html에 다음과 같은 FORM을 쓰면 됩니다.
<form method="post" action="/auth/login/">
            {% csrf_token %}
            {{ form.as_p }}
<button class="btn" type="submit">  </button>
<input type="hidden" name="next" value="{{ next }}" />

그러고 보니 역시 로그인이 되네요~~
로그인 확인
로그인하지 않은 호출에 대해서는 로그인 인터페이스로 이동해야 합니다.
@login_required(login_url="/auth/login/")

함수 이름에 이것만 추가하면 됩니다. 로그인하지 않으면 자동으로 이동합니다.
세팅에 또 넣었어요.
if not WEBROOT.endswith('/'):
WEBROOT += '/'
if LOGIN_URL is None:
LOGIN_URL = WEBROOT + 'auth/login/'
if LOGOUT_URL is None:
LOGOUT_URL = WEBROOT + 'auth/logout/'
if LOGIN_REDIRECT_URL is None:
LOGIN_REDIRECT_URL = WEBROOT

이로써 로그인 문제는 기본적으로 해결되었습니다~
참고 자료
http://docs.openstack.org/developer/django_openstack_auth/installation.html#installation

좋은 웹페이지 즐겨찾기