Membership - mostrar/ocultar menus de acordo com as roles

16/07/2011

0

Já desenvolvi as rotinas de criação/alteração/exclusão de usuários (Membership.CreateUser, Membership.GetUser, Membership.UpdateUser, MembershipUser.ChangePassword), de atribuição de roles (Roles.AddUserToRole, Roles.GetRolesForUser, Roles.GetAllRoles).
 
Agora preciso e não sei como fazer:

1. Ler as autorizações de acesso (armazenadas no web.config) e mostrar/ocultar os respectivos menus de acesso aos cadastros. Por exemplo, quero acessar todos os "locations path" como listado abaixo e ler as roles habilitadas/desabilitadas, de forma a mostrar ou ocultar os items de menu, assim o usuário de um grupo (role) que não tem acesso a determinado cadastro, nem visualiza o menu de acesso ao cadastro.

          <location path="Cadastros/Alunos.aspx">
                <system.web>
                    <authorization>
                        <deny users="?"/>
                        <allow roles="Coordenação"/>
                        <deny users="*"/>
                    </authorization>
                </system.web>
            </location>


2. Como faço para criar/excluir uma entrada <location path> via código?

Abraços
Wanderley Saijo

Wanderley Saijo

Responder

Posts

19/07/2011

Paulo Freire

Porque vc não confere as regras ao acessar as páginas ao invés de trabalhar com Web.Config, prefiro trabalhar assim:
No code-behind da pagina Aluno.aspx

        protected void Page_Load(object sender, EventArgs e)        {
            if (!Roles.IsUserInRole("Coordenação"))                Response.Redirect("ErroPermissao.aspx");



Ai eu direciono para uma pagina onde tem uma mensagem de erro de acesso, vc poderá colocar um MessageBox, sei lá.
Qualquer coisa, grita ai, ok

Shalom Adonai
Paulo Freire
Responder

03/12/2011

Rodrigo Odasaki

Você pode colocar um menu diferente de acordo com o perfil e deixar dentro de um Panel.

No método PageLoad colocar para subir todos com o Visibile false.
Coloca como true somente de acordo com o usuário logado.

Eu não faria assim, mas como você está fazendo dessa forma, acho que a forma mais simples seria esta.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar