Пример #1
0
        public ActionResult LogOff() // finaliza a sessão
        {
            Usuario usuario = Session["UsuarioAtual"] as Usuario;

            FormsAuthentication.SignOut();
            Session.Remove("UsuarioLogado");
            Session.Remove("UsuarioAtual");
            Session.Abandon();

            HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");

            cookie1.Expires = DateTime.Now.AddYears(-1);
            Response.Cookies.Add(cookie1);

            SessionStateSection s       = (SessionStateSection)WebConfigurationManager.GetSection("system.web/sessionState");
            HttpCookie          cookie2 = new HttpCookie(s.CookieName, "");

            cookie2.Expires = DateTime.Now.AddYears(-1);
            Response.Cookies.Add(cookie2);


            MenuController.descarregar();

            Historico log = new Historico();

            log.dataHora = DateTime.Now;
            log.usuario  = usuario;
            log.mensagem = "Logoff em intranet.";

            HistoricoBO logBO = new HistoricoBO();

            logBO.Gravar(log, log.mensagem);


            return(RedirectToAction("Index", "Home"));
        }
Пример #2
0
        public ActionResult Login(FormCollection form, String retunrUrl)// action responsavel por autenticação
        {
            UsuarioBO uBO = new UsuarioBO();

            GrupoUsuario grupo = new GrupoUsuario();

            String[] txbNomeUsuario = form["nomeUsuario"].ToString().Split('@'); // nonme de logon (ex: Fenix/gsc) no Active DIrectory



            if ((form["nomeUsuario"] == String.Empty || form["Senha"] == String.Empty)) // verifico se os campos nãoe stão em brancos
            {
                ViewBag.LoginError = "Nome de usuário ou senha inválidos.";
                return(RedirectToAction("Index"));
            }

            else
            {
                GrupoUsuarioBO   guBO = new GrupoUsuarioBO();
                UsuarioEGruposBO uXg  = new UsuarioEGruposBO();


                var usuario = uBO.PesquisarUsuario(form["nomeUsuario"].ToString(), form["Senha"].ToString()); // procura o usuario no banco da aplicação pelo user e senha digitado



                if (usuario != null)
                {
                    AutenticadorLDAP autenticador = new AutenticadorLDAP("LDAP://fenix.net", txbNomeUsuario[0], usuario.senha); //procura usuario no AD  com as credenciais passadas

                    if (/*autenticador.autenticar()*/ true)
                    {
                        foreach (var idGrupo in uXg.listaDeGrupoAQualPertence(usuario.id))
                        {
                            GrupoUsuario g = new GrupoUsuario();
                            g.id = idGrupo;

                            usuario.setGrupos(g);
                        }

                        usuario.privilegios = guBO.pegarPrivilegios(usuario);

                        FormsAuthentication.SetAuthCookie(usuario.usuarioLogin, true);

                        FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, usuario.usuarioLogin, DateTime.Now, DateTime.Now.AddMinutes(20), true, usuario.privilegios);

                        string encryptedTicket = FormsAuthentication.Encrypt(authTicket);


                        HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);



                        Response.Cookies.Add(authCookie);


                        Session.Add("UsuarioAtual", usuario);


                        Session.Add("UsuarioLogado", false); // criar uma flag para usuario logado


                        Historico log = new Historico(); // crio uma entra no log de eventos da aplicação

                        log.dataHora = DateTime.Now;
                        log.usuario  = usuario;
                        log.mensagem = "Logon em intranet.";

                        HistoricoBO logBO = new HistoricoBO();

                        logBO.Gravar(log, log.mensagem);


                        return(RedirectToAction("Principal", "Home"));
                    }
                    else
                    {
                        return(RedirectToAction("Index"));
                    }
                }
                else
                {
                    return(RedirectToAction("Index"));
                }
            }
        }