GithubHelp home page GithubHelp logo

risent / django-loginurl Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fajran/django-loginurl

0.0 1.0 0.0 134 KB

Allowing an anonymous user to log in by only visiting a URL

Home Page: http://github.com/fajran/django-loginurl

License: BSD 3-Clause "New" or "Revised" License

Python 100.00%

django-loginurl's Introduction

Django Login URL

This is a simple application for Django that allows an anonymous visitor to log in as a user by only visiting a URL.

By default, the URL is only valid once and cannot be used multiple times. Other schemes that involve the number of visit and/or an expiry date can also be created. For example, it is possible to create a log in URL that only valid for 5 visits before next week using this application.

Configuration

  1. Add django-loginurl application into your Django project. Modify your settings.py like the following:

    INSTALLED_APPS = (
        ...
        'loginurl',
        ...
    )
  2. Add the authentication backend of this django-loginurl application to your project's settings.py. :

    AUTHENTICATION_BACKENDS = (
        'django.contrib.auth.backends.ModelBackend',
        'loginurl.backends.LoginUrlBackend',
    )

    The first authentication backend is the default and if your project uses the Django's standard authentication mechanism, you will need that.

    Consult the Django documentation for more information regarding the backend. See http://docs.djangoproject.com/en/dev/topics/auth/#other-authentication-sources

  3. Include the application's urls.py to your project. :

    urlpatterns = patterns('',
        ...
        (r'^loginurl/', include('loginurl.urls')),
        ...
    )

    This will make requests to loginurl/ are handled by django-loginurl. If the configuration is put inside the project's urls.py, the log in URL will look like the following:

    http://example.com/loginurl/a-secret-key

Scheduled Task

To keep your database clean from expired secret keys, a scheduled task need to be set up. This task should do one of the following.

  1. Call loginurl_cleanup command from the Django's management script, or
  2. Open a special URL that will trigger the clean up, loginurl/cleanup/. e.g. http://example.com/loginurl/cleanup/

You can use crontab or the web based one to set this up. A daily or weekly task should be enough.

Usage

If your application need to create a one time log in URL, what you need to do is calling loginurl.utils.create with a user object as the parameter. The resulting object is an instance of loginurl.models.Key that has a property called key that contains a unique key for the log in URL. :

import loginurl.utils

def create_login_url(user):
    key = loginurl.utils.create(user)
    url = 'http://example.com/loginurl/%s' % key.key

    return url

Acknowledgement

This code has been developed in the context of the research activities of the FET project (Grant agreement no. 231807).

Epiwork: developing the framework for an epidemic forecast infrastructure.

See http://www.epiwork.eu/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.