django的登录会话

克里斯·米克

我正在尝试在Web应用程序中设置登录会话,但无法使其正常工作。我是django的新手,并阅读了有关会话的文档,但未连接到我的Web应用程序。目前,我只希望检查用户是否已登录以及是否未重定向到登录页面。

这是我尝试合并登录会话的代码。

settings.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'logins',
    'dashboards'
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

urls.py

    from django.conf.urls import patterns, include, url
    from django.conf import settings
    from django.conf.urls.static import static
    from django.contrib import admin
    admin.autodiscover()

    urlpatterns = patterns('',
        url(r'^$', 'logins.views.login', name='login'),
        url(r'^accounts/auth/$', 'logins.views.auth_view', name='auth_view'),
        url(r'^accounts/dashboard/$', 'dashboards.views.dashboard', name='dashboard'),
        url(r'^accounts/logout/$', 'logins.views.logout', name='logout'),
        url(r'^accounts/invalid/$', 'logins.views.invalid', name='invalid'),

用于登录的views.py

    from django.shortcuts import render, render_to_response, RequestContext
    from django.http import HttpResponseRedirect, HttpResponse
    from django.contrib import auth
    from django.core.context_processors import csrf

    def login(request):
        c = {}
        c.update(csrf(request))
        return render_to_response('login.html', c)

    def auth_view(request):
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')
        user = auth.authenticate(username=username, password=password)

        if user is not None and user.is_active:
            auth.login(request, user)
            return HttpResponseRedirect('/accounts/dashboard')
        else:
            return HttpResponseRedirect('/accounts/invalid')

    def logout(request):
        auth.logout(request)
        return render_to_response('logout.html')

    def invalid(request):
        return render_to_response('invalid.html')

用于登录的仪表板应用程序的views.py

from django.shortcuts import render, render_to_response, RequestContext
from django.http import HttpResponseRedirect, HttpResponse
from django.contrib import auth
from django.core.context_processors import csrf

def dashboard(request):
    return render_to_response('dashboard.html')
背风处

在django中执行此操作非常简单:在此示例中,会话将保存在数据库中(您必须将django应用与数据库同步)

用户登录:

from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login
if request.method == 'POST':
    username = request.POST.get('nickname','')
    password = request.POST.get('password','')
    user = authenticate(username=username, password=password)
        if user is not None:
            if user.is_active:
                request.session.set_expiry(86400) #sets the exp. value of the session 
                login(request, user) #the user is now logged in

对于其他站点(您需要登录的站点):

def my_func(request):
    if request.user.is_authenticated():
        print (user.id) #the user is loggedin

或者您使用login_require-decorator:

from django.contrib.auth.decorators import login_required

@login_required
def my_func(request):
    print(user.id) #the user is loggedin

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

django查看会话ID-用户未登录丢失

来自分类Dev

Django AllAuth-登录/注册后保存会话数据

来自分类Dev

保护登录会话

来自分类Dev

登录和会话PHP

来自分类Dev

CodeIgniter登录和会话

来自分类Dev

无法登录会话(Rails)

来自分类Dev

远程枚举登录会话

来自分类Dev

登录前会话ID?

来自分类Dev

登录中的PHP会话

来自分类Dev

登录和会话PHP

来自分类Dev

如何共享登录会话?

来自分类Dev

用户会话和登录

来自分类Dev

使用会话登录PHP

来自分类Dev

登录后会话超时?

来自分类Dev

PHP 登录(会话问题)

来自分类Dev

在django-allauth中,登录后如何以及在何处设置会话变量?

来自分类Dev

Django-具有REST登录支持的自定义会话

来自分类Dev

如何在Django中的登录处理中获取用户会话?

来自分类Dev

如何创建一个在Django登录时设置会话变量的中间件?

来自分类Dev

django:我们能否通过邮递员中的cookie通过会话ID并登录

来自分类Dev

带有Django后端自动登录会话的Android应用程序前端

来自分类Dev

如何在Django中的登录处理中获取用户会话?

来自分类Dev

检查登录状态并保存登录会话(PHP)

来自分类Dev

登录后填充用户会话

来自分类Dev

Laravel中的单会话登录

来自分类Dev

Python:请求会话登录Cookie

来自分类Dev

如何使Flask记住登录会话

来自分类Dev

从登录屏幕开始访客会话

来自分类Dev

会话登录(Chrome后退箭头)