Перейти к основному содержимому

Установка

pip install sss-auth

Настройка на стороне Django

Из проекта Django выполнитьINSTALLED_APPSили жеAUTHENTICATION_BACKENDSдобавить в

INSTALLED_APPS = (
...
'sssauth.apps.sssAuthConfig',
...
)
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'sssauth.backend.Web3Backend'
]

Добавьте настройки, используемые sssauth, в settings.py.

SERVER_SECRET = '**************'
PUB = "************"
OWNER = "********"
NETWORK_TYPE = 152 # mainnet: 104, testnet: 152
EXPIRATION_DATE = 60 * 1 * 1 * 1000

Настройте свою пользовательскую модель

# Using CustomUser
AUTH_USER_MODEL = 'sssauth.MyUser'

Добавить URL-адрес sssauth в шаблон URL-адреса

urlpatterns = [
path(r'^', include('sssauth.urls', namespace='sssauth')),
]

Опишите поведение при входе в систему и добавьте его в URL

from sssauth.forms import LoginForm, SignupForm
urlpatterns = [
path('signup/', CreateView.as_view(
template_name='accounts/signup.html',
form_class=SignupForm,
success_url='/',
), name='signup'),
path('login/', LoginView.as_view(
redirect_authenticated_user=True,
template_name='accounts/login.html',
), name='login'),
path('logout/', LogoutView.as_view(), name='logout'),
]

Настройки веб-страницы

Войти

импортировать sssauth javascript、и вы можете запросить подпись, выполнив requestToken

  <script src="{% static 'sssauth/js/sssAuth.js' %}"></script>
<script>
function requestToken() {
if (typeof window.SSS !== 'undefined') {
checkSSS(function (loggedIn) {
if (!loggedIn) {
alert("Please allow thin page in SSS")
} else {
var login_url = '{% url 'sssauth:sssauth_login_api' %}';
SSSLogin(login_url,console.log, console.log, console.log, console.log, console.log, function (resp) {
window.location.replace(resp.redirect_url);
})
};
});

} else {
alert('SSS missing');
}
}
</script>

Подписывать

Вы можете создать форму регистрации, используя bootstrap djangp, следующим образом:

{% load django_bootstrap5 %}

{% block main %}
<h2>register</h2>
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}
{% bootstrap_button button_type="submit" content="signup" %}
</form>
{% endblock %}

Пример конфигурации с помощью docker

Размещение в каталоге

Настройте каталог следующим образом

.
├── docker
│ ├── Dockerfile
│ └── requirements.txt
├── docker-compose.yml
├── python
│ ├── accounts
│ │ ├── __init__.py
│ │ ├── __pycache__
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── migrations
│ │ ├── models.py
│ │ ├── tests.py
│ │ ├── urls.py
│ │ └── views.py
│ ├── config
│ │ ├── __init__.py
│ │ ├── __pycache__
│ │ ├── asgi.py
│ │ ├── settings.py
│ │ ├── urls.py
│ │ ├── views.py
│ │ └── wsgi.py
│ ├── db.sqlite3
│ ├── manage.py
│ └── templates
│ ├── accounts
│ ├── base.html
│ ├── home.html
│ └── index.html
└── script
└── start.sh

докер-контейнер

Dockerfile

Внесите изменения в контейнер python по мере необходимости.

## docker/Dockerfile

FROM python:3.9.5

ENV PYTHONUNBUFFERED 1
RUN mkdir /workspace

WORKDIR /workspace

ADD requirements.txt /workspace/

RUN pip install --upgrade pip
RUN pip install -r requirements.txt

Кроме того, установите необходимый пакет для python следующим образом.

# docker/requirements.txt
Django==4
django-bootstrap5
symbol-hkdf-python

docker-compose

Определите контейнер в docker-compose.Измените номер порта по мере необходимости.На этот раз мы определяем его следующим образом

## docker-compose.yml

version: '3'

services:
server:
build: ./docker
ports:
- 8000:8000
volumes:
- ./python/:/workspace
- ./script:/script
working_dir: /workspace
command: bash /script/start.sh

Настройка сценария запуска

Описывает процесс при запуске. Поскольку sssauth для того чтобы использовать аутентификацию, необходимо создать индекс при первом запуске.После подтверждения запустите сервер.

## scripts/start.sh

# indexの有無を確認
if [ ! -e 'db.sqlite3' ]; then
# 初回起動
echo "### initialize start ####"
python manage.py makemigrations web3auth
python manage.py migrate
echo "### initialize end ####"
else
# 2回目以降
echo "### Already setup ###"
fi
# Djangoの起動
python manage.py runserver 0.0.0.0:8000

Запуск контейнера

После того как вы настроили эти файлы, вы можете запустить сервер с помощью следующей команды

docker-compose up -d

После запуска、http://localhost:8000 пожалуйста, посетите ссылку url, чтобы узнать, можете ли вы просмотреть эту страницу.