Fazendo um código beta para um site django pública

votos
11

Estou prestes a colocar uma versão beta do site que estou trabalhando em cima da web. Ele precisa ter um código beta para restringir o acesso. O site está escrito em Django.

Eu não quero mudar o sistema Auth fundamental para acomodar um código beta, e eu não me importo particularmente que a segurança do código beta é ferro-folheados, apenas que é um obstáculo significativo.

Como devo fazer isso? É um projeto bastante grande, assim que adicionar código para cada ponto de vista é longe do ideal.


Essa solução funciona bem. A classe Middleware acabei com este presente:

from django.http import HttpResponseRedirect

class BetaMiddleware(object):
    
    Require beta code session key in order to view any page.
    
    def process_request(self, request):
        if request.path != '/beta/' and not request.session.get('in_beta'):
            return HttpResponseRedirect('%s?next=%s' % ('/beta/', request.path))
Publicado 19/09/2008 em 22:17
fonte usuário
Em outras línguas...                            


6 respostas

votos
19

Comece com esse trecho Django , mas modificá-lo para verificar request.session['has_beta_access']. Se eles não tem, então tê-lo retornar um redirecionamento para uma página "introduza o código beta" que, quando lançados com o código certo, define essa variável de sessão para True.

Tornando-se um beta público, em seguida, apenas consiste em remover esse middleware a partir do seu MIDDLEWARE_CLASSESambiente.

Respondeu 19/09/2008 em 23:43
fonte usuário

votos
4

Provavelmente, você pode restringir o acesso a todo o site via apache com htaccess, levando o problema para fora do espaço de projeto do django inteiramente.

Respondeu 19/09/2008 em 22:25
fonte usuário

votos
2

Faça o que StackOverflow fez.

Eles tinham uma forma de e-mail / senha simples. Ele tinha uma única senha embutida (falkensmaze). Quando o usuário recebe a senha correta definir um cookie. por exemplo. auth = 1

Não se preocupe sobre ele ser inseguro. Quem se importa de se alguém hacks para a versão beta?

Apache / htaccess também é uma solução simples e simpático.

Respondeu 19/09/2008 em 22:51
fonte usuário

votos
0

Grande trecho mas resultou muitos problemas para mim sessões OpenId relacionados. Então eu acabo contando com biscoitos em vez da sessão:

class BetaMiddleware(object):
    """
    Require beta code cookie key in order to view any page.
    """
    set_beta = False
    def process_request(self, request):
        referer = request.META.get('HTTP_REFERER', '')

        if request.method == 'GET' and not 'is_in_beta' in request.COOKIES:
            return HttpResponseRedirect('%s?next=%s' % ('/beta/', request.path))

        if request.method == 'POST' and 'pass' in request.POST:
            code = request.POST['pass']

            if code=='beta':
                self.set_beta = True
                return HttpResponseRedirect('%s' % '/')

    def process_response(self, request, response):        

        if self.set_beta is True:
            response.set_cookie('is_in_beta', '1')
        return response

Não é seguro, mas isso é suficiente para mim. Isso também funciona com apenas uma página beta html.

Respondeu 20/11/2009 em 15:47
fonte usuário

votos
0

Eu não tenho certeza do que versão do código Pinax você está usando, mas eles construíram na capacidade de fechar o site off para um beta privado para que você não precisa fazer muito trabalho sozinho.

O link para o modelo de projeto específico para um site beta privado é aqui: http://github.com/pinax/pinax/tree/3ad73d1ba44f37365333bae17b507668b0eb7e16/pinax/projects/private_beta_project embora eu acho que eles poderiam ter desde acrescentou que a funcionalidade de todo o projeto modelos.

Respondeu 08/08/2009 em 18:56
fonte usuário

votos
0

Você deve ser capaz de adicionar @login_requireddecoradores em toda a linha e ser feito com ele. A menos que você tem um barco de carga de funções de visualização, ele não deve ser muito horrível.

Respondeu 19/09/2008 em 22:24
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more