Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion Melhor forma de armazenar profile em sessão

Received: by 10.224.205.65 with SMTP id fp1mr1169868qab.4.1352893304375;
        Wed, 14 Nov 2012 03:41:44 -0800 (PST)
X-BeenThere: django-brasil@googlegroups.com
Received: by 10.224.186.211 with SMTP id ct19ls585396qab.8.gmail; Wed, 14 Nov
 2012 03:41:37 -0800 (PST)
Received: by 10.224.219.144 with SMTP id hu16mr9638119qab.1.1352893297699;
        Wed, 14 Nov 2012 03:41:37 -0800 (PST)
Received: by 10.224.219.144 with SMTP id hu16mr9638117qab.1.1352893297664;
        Wed, 14 Nov 2012 03:41:37 -0800 (PST)
Return-Path: <vinicius...@gmail.com>
Received: from mail-qc0-f169.google.com (mail-qc0-f169.google.com [209.85.216.169])
        by gmr-mx.google.com with ESMTPS id eb7si877820qcb.3.2012.11.14.03.41.37
        (version=TLSv1/SSLv3 cipher=OTHER);
        Wed, 14 Nov 2012 03:41:37 -0800 (PST)
Received-SPF: pass (google.com: domain of vinicius...@gmail.com designates 209.85.216.169 as permitted sender) client-ip=209.85.216.169;
Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of vinicius...@gmail.com designates 209.85.216.169 as permitted sender) smtp.mail=vinicius...@gmail.com; dkim=pass header...@gmail.com
Received: by mail-qc0-f169.google.com with SMTP id t2so164634qcq.28
        for <django-brasil@googlegroups.com>; Wed, 14 Nov 2012 03:41:37 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20120113;
        h=mime-version:in-reply-to:references:from:date:message-id:subject:to
         :content-type;
        bh=JBk1E/w5X7RFYwWSaNeNrwhH2XpPRx2t3qHaUJUXLWM=;
        b=io8Z3UwvoQSiurDXYWdmNxCwEBUArMHZuxRvuuIz2j0IKNtbu73pD3HElM0a0sugoG
         HSWm+aA2QHlH5moLBfdIyFkZRvEYMYjcbV5nxbDeqyLrzmpPidyI4qnnHaxWmrM9UFGp
         a2i1N41PvCvrwVEtfmkHtH5ehy/PzXjiqyEVOtCCroaqCsm/rILEB8Edz4K4bzvsZD2E
         mCeu8K5AYBgDCiYbk9k3PhUwYjTWIB0sl9ZTKKQKgxwdhd3d2AB+Zvn2S7bM8/5zBLJe
         81zInn+Ecdfk0oCaGp2ehk6kqFPzKFteBbNMzuU4j3H97OkB6rMsI9UvwQ4BIRy7FmYg
         JEcQ==
Received: by 10.229.102.79 with SMTP id f15mr2196950qco.1.1352893297521; Wed,
 14 Nov 2012 03:41:37 -0800 (PST)
MIME-Version: 1.0
Received: by 10.49.35.46 with HTTP; Wed, 14 Nov 2012 03:41:07 -0800 (PST)
In-Reply-To: <CAFsoaZunNik62H6PeBNKYFXh1BeTMHrMLab4=NCZyC1NcZU...@mail.gmail.com>
References: <CACe-hpUjdPj570UtE81swRmGsKSQrSzwO1WViKZAaRLwXwf...@mail.gmail.com>
 <CAFsoaZunNik62H6PeBNKYFXh1BeTMHrMLab4=NCZyC1NcZU...@mail.gmail.com>
From: Vinicius Assef <vinicius...@gmail.com>
Date: Wed, 14 Nov 2012 09:41:07 -0200
Message-ID: <CAFmXjSCnHUz++2t7KXDxWiyiZre+RkKLqeJouFHva-0atoH...@mail.gmail.com>
Subject: =?UTF-8?Q?Re=3A_Melhor_forma_de_armazenar_profile_em_sess=C3=A3o?=
To: django-brasil@googlegroups.com
Content-Type: multipart/alternative; boundary=0023544705486af6bb04ce730410

--0023544705486af6bb04ce730410
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Para maior flexibilidade de um sistema de permiss=C3=B5es, tente n=C3=A3o f=
azer
checagens do tipo "usu=C3=A1rio logado pertence ao grupo 1?".

Ao inv=C3=A9s disso, teste se "usu=C3=A1rio logado tem a permiss=C3=A3o X".=
 Isso d=C3=A1 mais
liberdade para implementar grupos (ou profiles) conforme a necessidade do
neg=C3=B3cio, sem implicar em mudan=C3=A7a no seu c=C3=B3digo-fonte.

Talvez, na situa=C3=A7=C3=A3o do Matheus, fa=C3=A7a algum sentido para um l=
og, mas nunca
encontrei um sentido para testar permiss=C3=B5es mesmo. E se voc=C3=AA enco=
ntrar, no
futuro ter=C3=A1 que criar algumas exce=C3=A7=C3=B5es. A n=C3=A3o ser que s=
eu sistema tenha
permiss=C3=B5es realmente muito simples.

Algumas exce=C3=A7=C3=B5es que j=C3=A1 me deparei foram: "o usu=C3=A1rio fu=
lano pertence ao
grupo 1, mas eu n=C3=A3o quero que ele tenha acesso =C3=A0 tela X". Se isso=
 acontecer
um dia (e acredite, =C3=A9 muito comum), seu esquema de verifica=C3=A7=C3=
=A3o por grupos
vai por =C3=A1gua abaixo. Outra situa=C3=A7=C3=A3o que foge =C3=A0 regra da=
s permiss=C3=B5es por
grupos, mas n=C3=A3o =C3=A0 rotina da empresas =C3=A9 "s=C3=B3 o gerente fu=
lano pode aprovar
isso, mas ele vive em reuni=C3=A3o. Ent=C3=A3o, a secret=C3=A1ria dele tem =
o usu=C3=A1rio/senha
dele e aprova no lugar dele." Bem, nem preciso explorar muito esse cen=C3=
=A1rio,
n=C3=A9?

Com os testes por permiss=C3=A3o, ao inv=C3=A9s de por grupo, =C3=A9 poss=
=C3=ADvel lidar com
situa=C3=A7=C3=B5es que adicionem/retirem permiss=C3=B5es a/de um determina=
do usu=C3=A1rio, sem
precisar mexer em seu c=C3=B3digo-fonte.

Mas, para isso, no caso do Django, =C3=A9 necess=C3=A1rio um backend de aut=
entica=C3=A7=C3=A3o
que trate essa situa=C3=A7=C3=A3o.

Para quem quiser expandir os estudos nesse assunto:
http://en.wikipedia.org/wiki/Rbac

Fica a dica.

--
Vinicius Assef



2012/11/14 Ely=C3=A9zer Mendes Rezende <elyeze...@gmail.com>

> Pelo que entendi, creio que voc=C3=AA possa usar grupos para resolver o
> problema.
>
> Se o usu=C3=A1rio est=C3=A1 no profile1 (grupo1) ele tem certas permiss=
=C3=B5es que
> permitem ver tudo relacionado ao profile1. Se estiver no profile2 tamb=C3=
=A9m,
> estar=C3=A1 no grupo2 e ter=C3=A1 outras permiss=C3=B5es que permitem que=
 veja outros
> conte=C3=BAdos.
>
> O trabalho que voc=C3=AA vai ter ser=C3=A1 adicionar os usu=C3=A1rios no =
grupo e marcar
> as views com as permiss=C3=B5es requeridas.
>
> Abra=C3=A7o
>
>
>  2012/11/14 Matheus Lima <matheus...@gmail.com>
>
>>
>> Boa noite,
>>
>> Pessoas, estou criando um sistema onde o usu=C3=A1rio ter=C3=A1 um ou ma=
is profiles.
>>
>> Todo o conte=C3=BAdo do sistema =C3=A9 associado a um profile. Cada usu=
=C3=A1rio s=C3=B3
>> enxerga o que pertence ao profile logado.
>>
>> A parte de separa=C3=A7=C3=A3o do conte=C3=BAdo est=C3=A1 ok, assim como=
 a modelagem.
>>
>> A minha d=C3=BAvida =C3=A9 sobre qual a melhor forma de fazer a verifica=
=C3=A7=C3=A3o se o
>> usu=C3=A1rio escolheu um profile. Eu pensei em algumas solu=C3=A7=C3=B5e=
s, como: criar um
>> decorator (ficaria muito repetitivo), atrelar ao backend de autentica=C3=
=A7=C3=A3o
>> (n=C3=A3o gostei muito dessa) ou criar um middleware depois da camada de
>> autentica=C3=A7=C3=A3o para verificar se o usu=C3=A1rio escolheu um prof=
ile.
>>
>> Eu acho que a solu=C3=A7=C3=A3o do middleware seria mais limpa pra aplic=
a=C3=A7=C3=A3o, por=C3=A9m
>> tem p=C3=A1ginas que s=C3=A3o p=C3=BAblicas, como a p=C3=A1gina inicial,=
 contato e a tela de
>> login.
>>
>>
>> Algu=C3=A9m tem alguma sugest=C3=A3o ou algum exemplo de c=C3=B3digo?
>>
>> --
>> Att,
>> *
>> *
>> *Matheus dos Santos Lima  ** <http://twitter.com/matheeusLimaaa>  <http:=
//www.facebook.com/profile.php?id=3D100001639854566>
>>  *
>>
>>
>>  --
>>
>>
>>
>
>
>
> --
> Ely=C3=A9zer Rezende
> http://elyezer.com
>
> --
>
>
>

--0023544705486af6bb04ce730410
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Para maior flexibilidade de um sistema de permiss=C3=B5es, tente n=C3=A3o f=
azer checagens do tipo &quot;usu=C3=A1rio logado pertence ao grupo 1?&quot;=
.<br><br>Ao inv=C3=A9s disso, teste se &quot;usu=C3=A1rio logado tem a perm=
iss=C3=A3o X&quot;. Isso d=C3=A1 mais liberdade para implementar grupos (ou=
 profiles) conforme a necessidade do neg=C3=B3cio, sem implicar em mudan=C3=
=A7a no seu c=C3=B3digo-fonte.<br>

<br>Talvez, na situa=C3=A7=C3=A3o do Matheus, fa=C3=A7a algum sentido para =
um log, mas nunca encontrei um sentido para testar permiss=C3=B5es mesmo. E=
 se voc=C3=AA encontrar, no futuro ter=C3=A1 que criar algumas exce=C3=A7=
=C3=B5es. A n=C3=A3o ser que seu sistema tenha permiss=C3=B5es realmente mu=
ito simples.<br>

<br>Algumas exce=C3=A7=C3=B5es que j=C3=A1 me deparei foram: &quot;o usu=C3=
=A1rio fulano pertence ao grupo 1, mas eu n=C3=A3o quero que ele tenha aces=
so =C3=A0 tela X&quot;. Se isso acontecer um dia (e acredite, =C3=A9 muito =
comum), seu esquema de verifica=C3=A7=C3=A3o por grupos vai por =C3=A1gua a=
baixo. Outra situa=C3=A7=C3=A3o que foge =C3=A0 regra das permiss=C3=B5es p=
or grupos, mas n=C3=A3o =C3=A0 rotina da empresas =C3=A9 &quot;s=C3=B3 o ge=
rente fulano pode aprovar isso, mas ele vive em reuni=C3=A3o. Ent=C3=A3o, a=
 secret=C3=A1ria dele tem o usu=C3=A1rio/senha dele e aprova no lugar dele.=
&quot; Bem, nem preciso explorar muito esse cen=C3=A1rio, n=C3=A9?<br>

<br>Com os testes por permiss=C3=A3o, ao inv=C3=A9s de por grupo, =C3=A9 po=
ss=C3=ADvel lidar com situa=C3=A7=C3=B5es que adicionem/retirem permiss=C3=
=B5es a/de um determinado usu=C3=A1rio, sem precisar mexer em seu c=C3=B3di=
go-fonte.<br><br>Mas, para isso, no caso do Django, =C3=A9 necess=C3=A1rio =
um backend de autentica=C3=A7=C3=A3o que trate essa situa=C3=A7=C3=A3o.<br>

<br>Para quem quiser expandir os estudos nesse assunto: <a href=3D"http://e=
n.wikipedia.org/wiki/Rbac">http://en.wikipedia.org/wiki/Rbac</a><br><br>Fic=
a a dica.<br><br>--<br>Vinicius Assef<br><br><br><br><div class=3D"gmail_qu=
ote">

2012/11/14 Ely=C3=A9zer Mendes Rezende <span dir=3D"ltr">&lt;<a href=3D"mai=
lto:elyeze...@gmail.com" target=3D"_blank">elyeze...@gmail.com</a>&gt;</spa=
n><br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-l=
eft:1px #ccc solid;padding-left:1ex">

Pelo que entendi, creio que voc=C3=AA possa usar grupos para resolver o pro=
blema.<div><br></div><div>Se o usu=C3=A1rio est=C3=A1 no profile1 (grupo1) =
ele tem certas permiss=C3=B5es que permitem ver tudo relacionado ao profile=
1. Se estiver no profile2 tamb=C3=A9m, estar=C3=A1 no grupo2 e ter=C3=A1 ou=
tras permiss=C3=B5es que permitem que veja outros conte=C3=BAdos.</div>


<div><br></div><div>O trabalho que voc=C3=AA vai ter ser=C3=A1 adicionar os=
 usu=C3=A1rios no grupo e marcar as views com as permiss=C3=B5es requeridas=
.</div><div><br></div><div>Abra=C3=A7o</div><div class=3D"gmail_extra"><div=
><div class=3D"h5"><br><br>

<div class=3D"gmail_quote">
2012/11/14 Matheus Lima <span dir=3D"ltr">&lt;<a href=3D"mailto:matheus.se@=
gmail.com" target=3D"_blank">matheus...@gmail.com</a>&gt;</span><br><blockq=
uote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc =
solid;padding-left:1ex">


<div><br></div>Boa noite,<div><br></div><div>Pessoas, estou criando um sist=
ema onde o usu=C3=A1rio ter=C3=A1 um ou mais profiles.</div><div><br></div>=
<div>Todo o conte=C3=BAdo do sistema =C3=A9 associado a um profile. Cada us=
u=C3=A1rio s=C3=B3 enxerga o que pertence ao profile logado.</div>




<div><br></div><div>A parte de separa=C3=A7=C3=A3o do conte=C3=BAdo est=C3=
=A1 ok, assim como a modelagem.</div><div><br></div><div>A minha d=C3=BAvid=
a =C3=A9 sobre qual a melhor forma de fazer a verifica=C3=A7=C3=A3o se o us=
u=C3=A1rio escolheu um profile. Eu pensei em algumas solu=C3=A7=C3=B5es, co=
mo: criar um decorator (ficaria muito repetitivo), atrelar ao backend de au=
tentica=C3=A7=C3=A3o (n=C3=A3o gostei muito dessa) ou criar um middleware d=
epois da camada de autentica=C3=A7=C3=A3o para verificar se o usu=C3=A1rio =
escolheu um profile.</div>




<div><br></div><div>Eu acho que a solu=C3=A7=C3=A3o do middleware seria mai=
s limpa pra aplica=C3=A7=C3=A3o, por=C3=A9m tem p=C3=A1ginas que s=C3=A3o p=
=C3=BAblicas, como a p=C3=A1gina inicial, contato e a tela de login.</div><=
div><br></div><div><br></div><div>Algu=C3=A9m tem alguma sugest=C3=A3o ou a=
lgum exemplo de c=C3=B3digo?</div>


<span><font color=3D"#888888">

<div><div><br></div>-- <br><div>Att,</div><div style=3D"font-weight:bold"><=
b><br></b></div><b>Matheus dos Santos Lima =C2=A0</b><b><a href=3D"http://t=
witter.com/matheeusLimaaa" target=3D"_blank"><img src=3D""></a>=C2=A0=C2=A0=
<a href=3D"http://www.facebook.com/profile.php?id=3D100001639854566" target=
=3D"_blank"><img src=3D""></a>=C2=A0</b><div>




<br></div><br>
</div>

<p></p>

-- <br>
=C2=A0<br>
=C2=A0<br>
</font></span></blockquote></div><br><br clear=3D"all"><div><br></div></div=
></div><span class=3D"HOEnZb"><font color=3D"#888888">-- <br>Ely=C3=A9zer R=
ezende<br><a href=3D"http://elyezer.com" target=3D"_blank">http://elyezer.c=
om</a><br>


</font></span></div><span class=3D"HOEnZb"><font color=3D"#888888">

<p></p>

-- <br>
=C2=A0<br>
=C2=A0<br>
</font></span></blockquote></div><br>

--0023544705486af6bb04ce730410--