Criar Regras por perfil de usuarios

Resposta Proposta Criar Regras por perfil de usuarios

  • quinta-feira, 15 de março de 2012 13:00
     
      Contém Código

    Bom dia!

    Estou desenvolvendo um projeto web MVC3, eu tenho duas tabelas de controle. Uma de usuario e outra de permissões, cada usuario está ligado a uma permissão. Ex: usuario 1 está na permissão 1.

    Gostaria de saber se existe alguma roles disponveis na controller para poder dar permissão para acessos do site. Ou seja na area de cadastrar o usuario 1 com a permissão 1 pode acessar todas as areas mas o usuario 2 com a permissão 2 não pode.

    Alguem teria algum exemplo para poder da continuidade no sistema.

    Grato,

    eu cheguei a utulizar isso na controller mas não consegui identificar como ele defini que o usuario faz parte daquela regra. ex.

    [Authorize(Roles = "administrador")]
            public ActionResult Index()
            {
                return View();
            }

Todas as Respostas

  • quinta-feira, 15 de março de 2012 17:00
     
     

    Ola Cleiton,

    Segue um link que pode te ajudar

    http://www.macoratti.net/10/08/aspn_aut1.htm

    abraços

  • quinta-feira, 15 de março de 2012 18:16
     
     

    Ola Oliveira ,

    Eu já estou conseguindo pegar o usuario e o grupo que ele pertence na controller eu queria saber como passar para   

    [Authorize(Roles = "administrador")] .

    Grato,

  • sexta-feira, 16 de março de 2012 00:31
     
     

    Fala Cleiton,

    Então cara você já definiu as regras de autorização no web.config?

    lembre que os nomes das regras são case sensitive, ou seja, diferencia maiúscula de minúscula

    Ve se este link pode te ajudar http://danielfonsecacastro.com.br/2009/11/28/asp-net-mvc-action-filters/

    Se não funcionar crie um filtro próprio para fazer isto:

    http://msdn.microsoft.com/pt-br/library/dd410056.aspx

    abraços

     


  • sexta-feira, 16 de março de 2012 19:09
     
     Resposta Proposta

    Cleiton, essas regras são definidas pelo Role Provider.

    Para criar regras e atribuir usuários a elas, clique no icon ASP.NET Configuration (é um globo com um martelo), vai abrir uma pagina de configuração, vá até a aba security e habilite o Role Provider, aí é só criar as roles e definir para cada usuário e correr pro abraço.

    Dê uma estudada sobre o Membership, Role e Profile Provider. Você vai gostar!

    Abs


    Wladiston Paiva - @wladiston - Microsoft MCTS, MTA

    • Sugerido como Resposta Wladiston Paiva quarta-feira, 21 de março de 2012 17:57
    •  
  • segunda-feira, 19 de março de 2012 18:04
     
     

    Wladiston, obrigado pela dica mas não estou conseguindo acessar o asp.net Configuration ele está me dando este erro

    The following message may help in diagnosing the problem: The method or operation is not implemented.

    Procurei na net mas tudo que tem de orientação não deu certo. Eu estou usando Entity Framework.  4.1 , será que pode ser isso?

    Grato,

  • segunda-feira, 19 de março de 2012 18:15
     
     

    Será que alguem tem alguma alternativa, eu tenho uma tabela usuarios e regras, criei um relacionamento entre as duas . Criei uma classe que quando logado eu consio pegar o usuario e qual regra ele pertence. Agora gostaria de saber se eu consigo tratrar isso para poder esconder os menus e não permitir que ele acesse via browser também. Alguem teria um dica para isso?

    Grato,

  • terça-feira, 20 de março de 2012 11:57
     
     

    cleiton costa, com certeza nao é por causa do EF 4.1.

    Tente executar isso:

    "First check if you have an aspnetdb.mdf under the App_Data subfolder of that you previously set up the needed tables for the application services in another database.

    If you haven't got these then build the solution and navigate to the page which has the login control on it. Normally ASP.NET will generate the needed database aspnetdb.mdfin the App_Data folder. Once you have that database you should be able to use the configuration which starts a web application with which you can create your users and define the roles to which they belong."

    Fonte: http://stackoverflow.com/questions/3143411/vs2010-asp-net-configuration-wont-open


    Wladiston Paiva - @wladiston - Microsoft MCTS, MTA

  • terça-feira, 20 de março de 2012 11:58
     
     
    Outro detalhe tbm é que o ASP.NET Configuration só funciona no IE.. então nada de tentar executar ele no Firefox.

    Wladiston Paiva - @wladiston - Microsoft MCTS, MTA

  • quarta-feira, 21 de março de 2012 17:33
     
     Resposta Proposta Contém Código

    Então dever ser isso, estou execuntando firefox.

    Wladiston eu consegui criar meu próprio metodo que herda RoleProvider, e chamei ele na controller passando a o nome da regra.

     [Filtro(Roles="usuario,administrador")].  e no Layout eu valido para esconder ou não o menu.

    @if (Perfil.Equals("administrador"))
                            {
                                <li>@Html.ActionLink("Empreendimentos", "Index", "Empreendimentos")</li>
                                <li>@Html.ActionLink("Listar", "Listar", "Empreendimentos")</li>
                                <li>@Html.ActionLink("Cadastrar", "Create", "Empreendimentos")</li>
                            }

    Fica ai a Dica, Mas muito obrigado pelo apoio, eu tentar usar o IE para fazer um teste.

    Grato,

    • Sugerido como Resposta Wladiston Paiva quarta-feira, 21 de março de 2012 17:57
    •  
  • segunda-feira, 9 de abril de 2012 02:25
     
     

    Cleiton, minha necessidade é parecida com a sua, e estou engatinhando em MVC, precisava de uma luz.

    Já tenho uma procedure que me retorna uma lista com os módulos de acordo com o perfil de usuário e preciso montar o menu com esses módulos e o menu fica na masterpage, mas não sei como fazer, como montar o menu depois que o usuário logar.

    Se alguém puder me ajudar agradeço.
  • segunda-feira, 16 de abril de 2012 16:57
     
      Contém Código

    Fabio desculpa a demora, bom para voce mostrar e sumir os menus é só voce montar assim

    @if (Perfil.Equals("administrador"))

    {

    <li>@Html.ActionLink("Empreendimentos", "Index", "Empreendimentos")

    </li> <li>@Html.ActionLink("Listar", "Listar", "Empreendimentos")</li>

    <li>@Html.ActionLink("Cadastrar", "Create", "Empreendimentos")</li>

    } @if(Perfil.Equals("usuarioNormal")) { <li>@Html.ActionLink("Listar","Listar","Empreendimentos")</li> }





    • Editado cleiton costa segunda-feira, 16 de abril de 2012 16:57
    •  
  • terça-feira, 29 de maio de 2012 13:27
     
     

    Cara!! Na minha aplicação eu utilizo da seguinte maneira

    [FiltroLogin]
        public class ClienteController : Controller
        {

    aqui eu uso na chamado do controller

        }

    Meu filtro é definido como em uma classe que faz a verificação direto no meu banco

                

    public class FiltroLogin : ActionFilterAttribute
        {
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                var controller = filterContext.Controller;
                var user = filterContext.HttpContext.User.Identity;

                if (!user.IsAuthenticated)
                {
                    filterContext.Result = new RedirectResult("~/Usuario/LogOn");
                }
                base.OnActionExecuting(filterContext);
            }

        public class FiltroColaborador : ActionFilterAttribute
        {
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                var controller = filterContext.Controller;
                var user = filterContext.HttpContext.User.Identity;

                RepositorioUsuario _repositorioUsuario = new RepositorioUsuario();
                var usuario = _repositorioUsuario.UsuarioPorEmail(user.Name);
                if (usuario.Tipo == 3)
                {
                    filterContext.Result = new RedirectResult("~/Home/SemPermissao");
                }
                base.OnActionExecuting(filterContext);
            }

    }

    Qualquer duvida!! Espero ter ajudado...