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
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
Curtir tópico
+ 0
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
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.
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
Clique aqui para fazer login e interagir na Comunidade :)