OWIN - Personnalisation UserManager
J'ai eu pour personnaliser le UserManager
classe pour trouver et authentifier les utilisateurs dans la structure de l'entreprise (les mélanges d'Authentification Active Directory avec un autre Oracle Authetication). Si j'ai mis en œuvre la FindAsync
et CreateIdentityAsync
, l'utilisateur n'est pas défini comme authentifié.
Mon UserManager
mise en œuvre:
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Security.Claims;
using System.Web;
using MyProject.Common;
using MyProject.Models;
using Microsoft.AspNet.Identity;
using System.Threading.Tasks;
namespace MyProject.Infrastructure
{
public class GNUserManager : UserManager<ApplicationUser>
{
public GNUserManager(IUserStore<ApplicationUser> store) : base(store)
{
}
public override async Task<ApplicationUser> FindAsync(string userName, string password)
{
/* Performs some logic here that returns true */
if (foundUser) {
return await Task.Run(() => new ApplicationUser
{
UserName = userName,
Id = userName
});
}
throw new Exception("User not found.");
}
public override async Task<ClaimsIdentity> CreateIdentityAsync(ApplicationUser user, string authenticationType)
{
IList<Claim> claimCollection = new List<Claim>
{
new Claim(ClaimTypes.Name, user.UserName),
new Claim(ClaimTypes.Country, "Brazil"),
new Claim(ClaimTypes.Email, user.UserName)
};
var claimsIdentity = new ClaimsIdentity(claimCollection, "Company Portal");
return await Task.Run(() => claimsIdentity);
}
}
}
Ce qui manque à mon utilisateur authentifié?
OriginalL'auteur Cigano Morrison Mendez | 2014-02-14
Vous devez vous connecter pour publier un commentaire.
Essayez de modifier cette ligne.
À ce
Qui devrait générer votre cookie pour vous ce qui est nécessaire.
OriginalL'auteur user3475140
Le UserManager gère l'identité de l'utilisateur dans la base de données ainsi que la validation des informations d'identification. En bref, c'est une base de l'outil de recherche. Pour obtenir de l'utilisateur "connecté" à votre application, vous devez émettre une sorte de jeton (comme un cookie de navigateur, les applications, ou un jeton pour api pour les applications). La plus récente approche ASP.NET est avec le Cookie d'Authentification Middleware pour le navigateur apps. Voir ici pour plus d'infos sur le cookie middleware:
http://brockallen.com/2013/10/24/a-primer-on-owin-cookie-authentication-middleware-for-the-asp-net-developer/
OriginalL'auteur Brock Allen
À la recherche à la SignIn méthode créée par un ASP.NET MVC 5 par défaut projet, nous pouvons voir ce code:
Ce que nous pouvons remarquer, c'est que
AuthenticationManager
qui est celui qui prend soin de autenthication signe, après que nous obtenions l'identité est également nécessaire pour SignIn avec leAuthenticationManager
. Alors peut-être que votre problème n'est pas avecUserManager
.La
AuthenticationManager
exemple dans le Contrôleur classe est récupéré par ce code:AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
s'exécute normalement, mais aucun cookie est généré. Débogage de ce code, je l'ai plongée danspublic override async Task<ClaimsIdentity> CreateIdentityAsync(ApplicationUser user, string authenticationType)
. Ce que j'ai besoin de savoir est de savoir comment générer le cookie.Peut-être pouvez-vous appeler la Méthode de base qui vous sont impérieuses?
Ont essayé avant, sans résultat.
Je suis sur le chat maintenant... vérifier qu'il n'y
OriginalL'auteur iuristona
Fournisseur de Données Oracle .NET ne prend actuellement pas en charge la Requête Asynchrone et Enregistrer.
OriginalL'auteur Mike