Questo dovrebbe essere semplice, ma semplicemente non riesco a capirlo dopo tutto il mio googling. Ecco cosa voglio. Ho una tabella utenti personalizzata (senza ruoli al momento) che mi piacerebbe autorizzare contro. Per questo dovrò implementare un Personal Membership Provider che ho già fatto. La mia domanda è però, come faccio a impostare un IPrincipal personalizzato su HttpContext.Current.User? Dove dovrebbe accadere? Diciamo che ho la seguente configurazione:IPrincipale personalizzato con autenticazione moduli in ASP.NET MVC
public class CustomMembershipProvider : MembershipProvider
{
private IUserRepository _repository;
public CustomMembershipProvider(IUserRepository repository)
{
_repository = repository;
}
public override bool ValidateUser(string username, string password)
{
//check user repository
}
//additional methods omitted for brevity
}
Ho poi avere una classe utente personalizzata gli attrezzi IPrincipal
e IIdentity
public class CustomUser : IPrincipal
{
public CustomUser(string name, int userId, string additionalInfo)
{
Identity = new CustomIdentity(name, userId, additionalInfo);
}
public IIdentity Identity { get; private set; }
public bool IsInRole(string role)
{
return true;
}
}
public class CustomIdentity : IIdentity
{
public CustomIdentity(string name, int userId, string additionalInfo)
{
Name = name;
UserId = userId;
AdditionalInfo = additionalInfo;
}
public string Name { get; private set; }
public string AuthenticationType
{
get { return "CustomAuth"; }
}
public bool IsAuthenticated
{
get { return !String.IsNullOrEmpty(Name); }
}
public int UserId { get; private set; }
public string AdditionalInfo { get; private set; }
}
Quindi la mia domanda è, dove è il posto giusto per impostare il Context.User a un'istanza di questo utente personalizzato? Ho bisogno di un attributo di autorizzazione personalizzato? Se sì, come sarebbe?
Come è andata avanti con questo alla fine? Sono agli inizi di fare qualcosa di simile a me stesso. – ETFairfax
Sono sulla stessa barca, sono quasi pronto per creare un metodo di estensione per fare il lavoro! –