- ¿Cómo puedo obtener la identificación del usuario actualmente conectado? MVC 5 ? Intenté las sugerencias de StackOverflow, pero parecen no ser para MVC 5.
 - Además, ¿cuál es la mejor práctica de MVC 5 de asignar cosas a los usuarios? (por ejemplo, una 
Userdebe tenerItems. debo guardar del usuarioIdenItem? ¿Puedo extender laUserclase con unaList<Item>propiedad de navegación? 
Estoy usando "Cuentas de usuario individual" de la plantilla MVC.
Probé estos:
- ¿Cómo obtengo el usuario actual en una aplicación MVC?
 - Cómo obtener el usuario actual en ASP.NET MVC
 - Inicie sesión en la ID del usuario : esto arroja lo siguiente:
 
'Membership.GetUser ()' es nulo.
                    
                        c#
                                asp.net
                                asp.net-mvc
                                asp.net-mvc-5
                                asp.net-identity
                                
                    
                    
                        Adam Szabo
fuente
                
                fuente

HttpContext.Current.User.Identity.Namees el nombre del usuario actualmente registrado.Itemque crea, pero no en función del nombre de usuario (eso podría cambiar). No funciona por la forma en que 'HttpContext.Current' System.Web.HttpContextBase 'no contiene una definición para' Current 'y no se puede encontrar ningún método de extensión' Current 'que acepte un primer argumento de tipo' System.Web.HttpContextBase '( ¿Le falta una directiva de uso o una referencia de ensamblado?) `. ¿Estás seguro de que tu solución es para MVC 5?Respuestas:
Si está codificando en un controlador ASP.NET MVC, use
Vale la pena mencionar que
User.Identity.IsAuthenticatedyUser.Identity.Namefuncionará sin agregar lausingdeclaración mencionada anteriormente . PeroGetUserId()no estará presente sin él.Si está en una clase que no sea un controlador, use
En la plantilla predeterminada de MVC 5, la ID de usuario es un GUID almacenado como una cadena.
Todavía no hay mejores prácticas, pero encontré información valiosa sobre cómo extender el perfil de usuario:
Identity: https://devblogs.microsoft.com/aspnet/introducing-asp-net-identity-a-membership-system-for-asp-net-applications/fuente
GetUserIdes un método de extensión almacenado en la parte inferiorAss_Start\IdentityConfig.cs, donde sea que necesite usarlo, si se encuentra en un espacio de nombres diferente, tendrá que configurar elusing Microsoft.AspNet.Identitypara que la extensión sea visible.Intenta algo como:
Funciona con RTM.
fuente
Si desea el objeto ApplicationUser en una línea de código (si tiene instalada la última identidad ASP.NET), intente:
Necesitará lo siguiente usando declaraciones:
fuente
Obtener el Id es bastante sencillo y lo has resuelto.
Sin embargo, su segunda pregunta es un poco más complicada.
Por lo tanto, todo esto es una versión preliminar en este momento, pero el problema común que enfrenta es dónde está extendiendo al usuario con nuevas propiedades (o una colección de Artículos en su pregunta).
Fuera de la caja obtendrá un archivo llamado
IdentityModelen la carpeta Modelos (en el momento de la escritura). Ahí tienes un par de clases;ApplicationUseryApplicationDbContext. Para agregar su colección deItemsquerrá modificar elApplicationUserclase, tal como lo haría si fuera una clase normal que estaba usando con Entity Framework. De hecho, si echa un vistazo rápido debajo del capó, encontrará que todas las clases relacionadas con la identidad (Usuario, Rol, etc.) son solo POCO ahora con las anotaciones de datos apropiadas para que funcionen bien con EF6.A continuación, deberá realizar algunos cambios en el
AccountControllerconstructor para que sepa usar su DbContext.Ahora, para ser honesto, obtener un objeto de usuario completo para su usuario conectado es un poco esotérico.
Esa línea hará el trabajo y podrás acceder
userWithItems.Itemscomo quieras.HTH
fuente
AccountController?Siento tu dolor, estoy tratando de hacer lo mismo. En mi caso solo quiero borrar al usuario.
He creado una clase de controlador base de la que todos mis controladores heredan. En él anulo
OnAuthenticationy configuro elfilterContext.HttpContext.User to nullEso es lo mejor que he logrado hasta ahora ...
fuente
fuente
si alguien más tiene esta situación: estoy creando una verificación por correo electrónico para iniciar sesión en mi aplicación para que mis usuarios aún no hayan iniciado sesión, sin embargo, utilicé lo siguiente para verificar si hay un correo electrónico ingresado en el inicio de sesión, que es una variación de la solución @firecape
También necesitará lo siguiente:
y
fuente
En .Net MVC5 core 2.2, uso HttpContext.User.Identity.Name. Funcionó para mi.
fuente
Así es como obtuve un AspNetUser Id y lo mostré en mi página de inicio
Coloqué el siguiente código en mi método HomeController Index ()
En la página de vista solo llame
Ejecute el proyecto y podrá ver su ID de usuario
fuente