Я тяну свои волосы на некоторое время с этим. Я развертываю приложение django с тестового сервера на apache с помощью машины mod_wsgi. все, кажется, работает, кроме системы аутентификации пользователя django, похоже, что она пишет сеанс таблицы django_session, и как-то он делает некоторую проверку, потому что, когда я предоставляю неверные учетные данные, возвращается сообщение об ошибке. это то, что @login_required() в представлениях всегда возвращает false. и доступ к странице администратора приложения запрещен. в исследовании, которое я сделал, это может быть из-за отсутствия параметра WSGIPassAuthorization В файле apache2.conf, но он не работает.Django не аутентифицируется в соответствии с mod_wsgi
мой VirtualHost файл:
<VirtualHost *:80>
ServerName myapp.cl
ServerAlias *.myapp.cl myapp.cl
Alias /static /home/ubuntu/django_projects/myapp/static
<Directory /home/ubuntu/django_projects/myapp/static>
Require all granted
</Directory>
<Directory /home/ubuntu/django_projects/myapp/myapp>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIProcessGroup myapp
WSGIDaemonProcess myapp python-path=/home/ubuntu/django_projects/myapp
WSGIScriptAlias//home/ubuntu/django_projects/myapp/myapp/wsgi.py process-group=myapp application-group=%{GLOBAL}
</VirtualHost>
и мой url_file:
rom django.conf.urls import url, include
from django.contrib import admin
from . import views as views_ini
from django.contrib.auth.views import login, logout, password_change, password_change_done
from myapp.views import aviso_sistema, inicio, LoginForm
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/$', login, {'template_name': 'loginrex.html',
'authentication_form': LoginForm,
}, name='django.contrib.auth.views.login'),
url(r'^logout/$', logout, {'next_page': '/login'}, name='logout'),
# ....Avisos del sistema
url(r'^aviso_sistema/(?P<titulo>[\w\ ]+)/(?P<detalle>[\w\ ]+)/(?P<tipo>[\w\ ]+)$', aviso_sistema, name='aviso_sistema'),
]
мой /myapp/myapp/views.py
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import AuthenticationForm
from django import forms
from myapp.definiciones.preferenciasDefi import unaPref
from myapp.deposito import procesoAnombre
from django.shortcuts import redirect
from django.conf import settings
@login_required()
def inicio(request):
#if not request.user.is_authenticated:
# raise ValueError('Usuario OK pero no logueado')
# return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
mdp = unaPref('mesActual')
dato = procesoAnombre(mdp)
datos = {
'mmp': dato,
'idv': ' ',
}
return render(request, 'inicio.html', datos)
class LoginForm(AuthenticationForm):
username = forms.CharField(label="Usuario", max_length=30,
widget=forms.TextInput(attrs={'class': 'form-control', 'name': 'username'}),
)
password = forms.CharField(label="Clave", max_length=30,
widget=forms.PasswordInput(attrs={'class': 'form-control', 'name': 'password'}),
)
# ........Genera los avisos del sistema
def aviso_sistema(request, titulo, detalle, tipo):
datos = {
'titulo': titulo,
'detalle': detalle,
'tipo': tipo,
}
return render(request, 'aviso_sistema.html', datos)
я действительно был бы признателен за помощь в этом , Thanks
Есть ли у вас какие-либо пользователи? Как вы их создали? –
i создал супер пользователя с: python manage.py создать суперпользователя который сгенерировал один в таблице auth_user –
настройка WSGIPassAuthorization. Это то, что вам нужно, когда вы используете аутентификацию без сеанса. – Jayground