- Como posso obter o ID do usuário atualmente conectado no MVC 5 ? Tentei as sugestões do StackOverflow, mas elas parecem não ser para o MVC 5.
- Além disso, qual é a melhor prática do MVC 5 de atribuir itens aos usuários? (por exemplo, um
User
deveria terItems
. Devo armazenar o usuárioId
emItem
? Posso estender aUser
classe com umaList<Item>
propriedade de navegação?
Estou usando "Contas de usuário individuais" do modelo MVC.
Tentei estes:
- Como obtenho o usuário atual em um aplicativo MVC?
- Como obter o usuário atual no ASP.NET MVC
- Identifique-se no usuário - isso gera o seguinte:
'Membership.GetUser ()' é nulo.
c#
asp.net
asp.net-mvc
asp.net-mvc-5
asp.net-identity
Adam Szabo
fonte
fonte
HttpContext.Current.User.Identity.Name
é o nome do usuário atualmente conectado.Item
ele cria, mas não com base no nome de usuário (isso pode mudar). Ele não está funcionando da maneira que 'HttpContext.Current' System.Web.HttpContextBase 'não contém uma definição para' Current 'e nenhum método de extensão' Current 'aceitando um primeiro argumento do tipo' System.Web.HttpContextBase 'pode ser encontrado ( está faltando uma diretiva de uso ou uma referência de montagem?) `. Tem certeza de que sua solução é para o MVC 5?Respostas:
Se você estiver codificando em um controlador ASP.NET MVC, use
Vale mencionar isso
User.Identity.IsAuthenticated
eUser.Identity.Name
funcionará sem adicionar ausing
declaração acima mencionada . MasGetUserId()
não estará presente sem ele.Se você estiver em uma classe que não seja um Controller, use
No modelo padrão do MVC 5, o ID do usuário é um GUID armazenado como uma sequência.
Nenhuma prática recomendada ainda, mas encontrei algumas informações valiosas sobre a extensão do perfil do usuário:
Identity
: https://devblogs.microsoft.com/aspnet/introducing-asp-net-identity-a-membership-system-for-asp-net-applications/fonte
GetUserId
é um método de extensão armazenado na parte inferior deAss_Start\IdentityConfig.cs
, onde você precisar usá-lo, se estiver em um espaço para nome diferente, será necessário definir ousing Microsoft.AspNet.Identity
para que a extensão fique visível.Tente algo como:
Funciona com RTM.
fonte
Se você desejar o objeto ApplicationUser em uma linha de código (se você tiver a última identidade do ASP.NET instalada), tente:
Você precisará das seguintes instruções de uso:
fonte
Obter o ID é bem simples e você resolveu isso.
Sua segunda pergunta, porém, é um pouco mais envolvida.
Portanto, isso é tudo pré-lançamento agora, mas o problema comum que você enfrenta é o de estender o usuário com novas propriedades (ou uma coleção de itens na sua pergunta).
Pronto, você receberá um arquivo chamado
IdentityModel
na pasta Modelos (no momento da redação). Lá você tem algumas aulas;ApplicationUser
eApplicationDbContext
. Para adicionar sua coleção,Items
você deseja modificar aApplicationUser
classe, como faria se essa fosse uma classe normal que você estava usando com o Entity Framework. De fato, se você der uma olhada rápida, descobrirá que todas as classes relacionadas à identidade (Usuário, Função etc ...) agora são apenas POCOs com as anotações de dados apropriadas, para que funcionem bem com o EF6.Em seguida, você precisará fazer algumas alterações no
AccountController
construtor para que ele saiba usar seu DbContext.Agora, obter todo o objeto de usuário para o usuário conectado é um pouco esotérico para ser honesto.
Essa linha fará o trabalho e você poderá acessar
userWithItems.Items
como quiser.HTH
fonte
AccountController
?Sinto sua dor, estou tentando fazer a mesma coisa. No meu caso, eu só quero limpar o usuário.
Eu criei uma classe de controlador base que todos os meus controladores herdam. Nele, substituo
OnAuthentication
e defino ofilterContext.HttpContext.User to null
Foi o melhor que consegui até agora ...
fonte
fonte
se alguém mais tiver essa situação: estou criando uma verificação de e-mail para fazer login no meu aplicativo, para que meus usuários ainda não estejam conectados, no entanto, usei o abaixo para verificar se há um e-mail inserido no login, o que é uma variação da solução @firecape
você também precisará do seguinte:
e
fonte
No .Net MVC5 core 2.2, eu uso HttpContext.User.Identity.Name. Funcionou para mim.
fonte
Foi assim que consegui um AspNetUser Id e o exibi na minha home page
Coloquei o seguinte código no meu método HomeController Index ()
Na página de visualização, basta ligar
Execute o projeto e você poderá ver seu userId
fonte