Komentáře k článku

web.py – autentizace a autorizace

V dnešním díle se budeme věnovat správě uživatelů a přístupových práv, tedy autentizaci a autorizaci. Pomocí frameworku web.py a rozšiřujícího modulu si vytvoříme jednoduchou aplikaci vyžadující přihlášení. Také si popíšeme základy přechovávání uživatelských jmen a hesel.

Zpět na článek

8 komentářů k článku web.py – autentizace a autorizace:

  1. honzas

    Pozor na obsluhu výjimek v Pythonu
    Při čtení kódu jsem narazil na následující chybu:

    except webmod.auth.UserNotFound, webmod.auth.WrongPassword:
    

    Správně má být:

    except (webmod.auth.UserNotFound, webmod.auth.WrongPassword):
    

    Z dokumentace Pythonu (2.x, pro 3.x je to obdobné, https://docs.python.org/2/tutorial/errors.html):

    A try statement may have more than one except clause, to specify
    handlers for different exceptions. At most one handler will be
    executed. Handlers only handle exceptions that occur in the
    corresponding try clause, not in other handlers of the same try
    statement. An except clause may name multiple exceptions as a
    parenthesized tuple, for example:

    … except (RuntimeError, TypeError, NameError):
    … pass

    Note
    that the parentheses around this tuple are required, because except
    ValueError, e: was the syntax used for what is normally written as
    except ValueError as e: in modern Python (described below). The old
    syntax is still supported for backwards compatibility. This means
    except RuntimeError, TypeError is not equivalent to except
    (RuntimeError, TypeError): but to except RuntimeError as TypeError:
    which is not what you want.

    Schválně si zkuste experimentovat s následujícím kódem:

    import random
    
    class e1(Exception):
        pass
    
    class e2(Exception):
        pass
    
    try:
        if random.choice([True, False]):
            raise e1('message')
        else:
            raise e2('message')
    except e1, e2:
        print 'error'
    

    Jedná se o jednu ze záludností Pythonu, na kterou je třeba dávat obzvláš pozor.

    1. Petr HoráčekAutor příspěvku

      Re: Pozor na obsluhu výjimek v Pythonu
      Máte pravdu, na tu starou Except syntaxi s čárkou jsem zapomněl. Díky

      1. IT expert

        Re: Pozor na obsluhu výjimek v Pythonu
        Pro odchytavani vice vyjimek doporucuji vytvorit si tuple se vsemi vyjimkami a pak chytavat tuto „meta“ vyjimku.

        AuthError = ( webmod.auth.UserNotFound, webmod.auth.WrongPassword )
        try:
           ...
        except AuthError, e:
           ...
        

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=13195