none
Guardar ID del Usuario Autenticado (ASP.NET MVC 5) RRS feed

  • Pregunta

  • Hola,

    Estoy realizando una aplicacion web con ASP.NET MVC 5 y Entity Framework, soy novato y quisiera que me ayudaran en algo puntual.

    Quiero saber como puedo tomar el ID del usuario activo en la sesión y guardarlo en una tabla que ya tiene el campo de usuarios.

    Tengo esta tabla.

    El usuario autenticado solo debe seleccionar entre varias opciones de dos DropDownList y almacenarse en esta ultima tabla.

    Paralelamente cree un proyecto desde cero añadiendo la base de datos que estoy usando para que me cree los controladores y las vistas y ver como funciona el proceso de listar y guardar, asi.

    public ActionResult Create()
            {
                ViewBag.Id_Usuario = new SelectList(db.AspNetUsers, "Id", "Email");
                ViewBag.Id_Pexterno = new SelectList(db.Tbl_PropositosExt, "Id", "Descripcion");
                ViewBag.Id_Pinterno = new SelectList(db.Tbl_PropositosInt, "Id", "Descripcion");
                return View();
            }
    
            // POST: movPropositoUsuarios/Create
            // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
            // more details see https://go.microsoft.com/fwlink/?LinkId=317598.
            [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult Create([Bind(Include = "Id_Usuario,Id_Pinterno,Id_Pexterno")] movPropositoUsuario movPropositoUsuario)
            {
                if (ModelState.IsValid)
                {
                    db.movPropositoUsuario.Add(movPropositoUsuario);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
    
                ViewBag.Id_Usuario = new SelectList(db.AspNetUsers, "Id", "Email", movPropositoUsuario.Id_Usuario);
                ViewBag.Id_Pexterno = new SelectList(db.Tbl_PropositosExt, "Id", "Descripcion", movPropositoUsuario.Id_Pexterno);
                ViewBag.Id_Pinterno = new SelectList(db.Tbl_PropositosInt, "Id", "Descripcion", movPropositoUsuario.Id_Pinterno);
                return View(movPropositoUsuario);
            }
    De esta forma, me permite hacer lo que necesito pero lo por ahora me esta listando también los usuarios registrados y seleccionarlos en un tercer DropDownList. 

    Reiterto, lo que necesito es que en vez de ese tercer Drop de usuarios, solo me seleccione el usuario que se encuentra autenticado en el momento y guardarse en esa tabla.

    ¿Como lo puedo hacer?

    Gracias.

    lunes, 28 de mayo de 2018 23:02

Todas las respuestas

  • hola

    >>lo que necesito es que en vez de ese tercer Drop de usuarios, solo me seleccione el usuario que se encuentra autenticado en el momento y guardarse en esa tabla.

    pero en el codigo que muestras no estas aplicando ninguna autenticacion, alli solo creas usuario, la autenticacion deberia darse en otro controller o action

    el usuario seleccionado deberias aplicarlo a la autenticacion de mvc, la idea es que uses la clase UserManager

    Cutting Edge : A First Look at ASP.NET Identity

    fijate como en SignInAsync se usa la linea

    AuthenticationManager.SignIn()

    alli es como te autenticas y luego usas la clase Identity para obtener el usuario

    pero tienes que entender como funciona la seguridad de asp.net mvc

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 31 de mayo de 2018 6:18
  • Hola,

    La aplicación ya tiene autenticación. Lo que necesito es tomar el ID del usuario que entro a la aplicación y que ese usuario selecione dos opciones en dos DropDownList y se almacene como se ve en la tabla.

    martes, 12 de junio de 2018 22:26