• django的认证支持模块


    1. 确认已经安装了session 框架。 需要确认用户使用cookie,这样sesson 框架才能正常使用。
    2. 'django.contrib.auth' 放在你的 INSTALLED_APPS 设置中,然后运行 manage.py syncdb以创建对应的数据库表。
    3. 确认 SessionMiddleware 后面的 MIDDLEWARE_CLASSES 设置中包含 'django.contrib.auth.middleware.AuthenticationMiddleware' SessionMiddleware。

    在视图中存取users,主要用 request.user ;这个对象表示当前已登录的用户。如果用户还没登录,这就是一个AnonymousUser对象(细节见下)。

    你可以很容易地通过 is_authenticated() 方法来判断一个用户是否已经登录了:

    if request.user.is_authenticated():
        # Do something for authenticated users.
    else:
        # Do something for anonymous users.
    

    使用User对象

    User 实例一般从 request.user ,或是其他下面即将要讨论到的方法取得,它有很多属性和方法。 AnonymousUser 对象模拟了 部分 的接口,但不是全部,在把它当成真正的user对象 使用前,你得检查一下 user.is_authenticated() 表14-3和14-4分别列出了`` User`` 对象中的属性(fields)和方法。

    表 14-3. User 对象属性
    属性 描述
    username 必需的,不能多于30个字符。 仅用字母数字式字符(字母、数字和下划线)。
    first_name 可选; 少于等于30字符。
    last_name 可选; 少于等于30字符。
    email 可选。 邮件地址。
    password 必需的。 密码的哈希值(Django不储存原始密码)。 See the Passwords section for more about this value.
    is_staff 布尔值。 用户是否拥有网站的管理权限。
    is_active 布尔值. 设置该账户是否可以登录。把该标志位置为False而不是直接删除账户。
    is_superuser 布尔值 标识用户是否拥有所有权限,无需显式地权限分配定义。
    last_login 用户上次登录的时间日期。 它被默认设置为当前的日期/时间。
    date_joined 账号被创建的日期时间 当账号被创建时,它被默认设置为当前的日期/时间。

    登录和退出

    Django 提供内置的视图(view)函数用于处理登录和退出 (以及其他奇技淫巧),但在开始前,我们来看看如何手工登录和退出。 Django提供两个函数来执行django.contrib.auth\中的动作 : authenticate()login()
    面的例子演示了如何在一个视图中同时使用 authenticate()login() 函数

    from django.contrib import auth
    
    def login_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:
            # Correct password, and the user is marked "active"
            auth.login(request, user)
            # Redirect to a success page.
            return HttpResponseRedirect("/account/loggedin/")
        else:
            # Show an error page
            return HttpResponseRedirect("/account/invalid/")
    

     

    注销一个用户,在你的视图中使用 django.contrib.auth.logout() 。 它接受一个HttpRequest对象并且没有返回值。

    from django.contrib import auth
    
    def logout_view(request):
        auth.logout(request)
        # Redirect to a success page.
        return HttpResponseRedirect("/account/loggedout/")
    

     

    在实际中,你一般不需要自己写登录/登出的函数;认证系统提供了一系例视图用来处理登录和登出。 使用认证视图的第一步是把它们写在你的URLconf中。 你需要这样写:

    from django.contrib.auth.views import login, logout
    
    urlpatterns = patterns('',
        # existing patterns here...
        (r'^accounts/login/$',  login),
        (r'^accounts/logout/$', logout),
    )
    

    /accounts/login//accounts/logout/ 是Django提供的视图的默认URL。

     

    限制已登录用户的访问

    作为一个快捷方式, 你可以使用便捷的 login_required 修饰符:

    from django.contrib.auth.decorators import login_required
    
    @login_required
    def my_view(request):
        # ...
    

    login_required 做下面的事情:

    • 如果用户没有登录, 重定向到 /accounts/login/ , 把当前绝对URL作为 next 在查询字符串中传递过去, 例如: /accounts/login/?next=/polls/3/ 。

    • 如果用户已经登录, 正常地执行视图函数。 视图代码就可以假定用户已经登录了。

  • 相关阅读:
    正则表达式
    匿名函数作业
    内置函数&匿名函数
    模拟面试题一
    迭代器
    生成器
    装饰器
    函数
    疑问?
    3,app信息抽取
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4145115.html
Copyright © 2020-2023  润新知