Array
(
)

Menu com View _Layout

Yuri Moraes
|
MVP
    27 jul 2015

Bom dia Galera,
estou precisando de uma ajuda para criar um Menu de acordo com o Perfil do Usuário. Estou usando MVC e no _Layout depois da autenticação(está criada), preciso que o Menu se ajuste de acordo com os Perfis(Administrador, Gerente e Usuário). Alguém pode me ajudar ou dar os caminhos das pedras? kkkkkkk

Randrade
   - 27 jul 2015

Não sei como você está utilizando a autenticação. Mas você pode trabalhar com ViewBags e realizar tal feito.

No seu controller, você atribui um valor à uma ViewBag;
#Código

public ActionResult Index(){
if(usuarioAutenticado == "Administrador"){
ViewBag.Administrador = true;
}
//resto do método.
}



E em sua View, você verifica se ele é um administrador ou não, dessa forma:

#Código

@if(ViewBag.Administrador == true){
Html.Partial("_MenuAdministrador")
}else{
Html.Partial("_MenuUsuarioComun")
}


Você pode fazer essa comparação com o que você estiver trabalhando. Se for com session (não é recomendado) utilize ela. Se for o Identity, ele oferece outros recursos.

No exemplo, eu coloquei o "if()" na partial, mas você pode colocar no menu, em um link, em uma imagem, em que você quiser. Só tome cuidado para seu código não virar um "ninho de gato"

Yuri Moraes
|
MVP
    27 jul 2015

Beleza, vou te explicar... Tenho uma controller chamada Autenticação e após logar tenho outra controller chamada Home, a autenticação é feita através do FormsAuthentication.SetAuthCookie(); .... posso utilizar ViewBag neste caso? E teria que ter três Menus ou seja poderia fazer 3 ViewBag?

Randrade
   - 27 jul 2015

Se você estivesse usando o Identity, uma simples verificação de "role" resolveria seu problema.
Mas como, pelo jeito, você criou seu método de autenticação, você cria as ViewBag's ou cria um menu dinâmico, onde você grava em um banco de dados as actions, controllers e permissões, retornando apenas os menus que os usuários possuem acesso.

Esse curso da DevMedia possui um exemplo do que você precisa, e nele é utilizado ViewBags para essa finalidade.

Yuri Moraes
|
MVP
    27 jul 2015

Estou tirando base nesse curso da DevMedia onde fiz a Autenticação da mesma forma.

Randrade
   - 27 jul 2015

É parecido. Porém neste curso ele utiliza o conceito de Areas junto.
Ambos os cursos utilizam FormsAuthentication, então não modifica muito a forma.
Se você olhar mais para o final do curso, verá que ele explicará melhor os conceitos.

Yuri Moraes
|
MVP
    27 jul 2015

Ok, vou verificar.