J'ai créé un cadre d'entité ASP.NET Identity et ajouté des champs client pour les fonctions d'enregistrement et de connexion dans ASP.NET Identity - MVC.
identityModel.cs
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
//add custom fields
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsAdministrator { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public DbSet<Property> Property { get; set; }
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
Dans une autre classe appelée Property (après que le login et l'authentification soient passés)
Je veux faire appel à un seul champ de la table AspNetUsers, qui est celui qui est actuellement connecté. Je veux vérifier le champ IsAdministrator et ses valeurs et poser des conditions sur ce qu'il faut afficher en fonction de cette valeur.
C'est ce que j'ai fait, mais sans succès.
public class PropertyController : Controller
{
private ApplicationDbContext db = new ApplicationDbContext();
// GET: Property
[Authorize]
public async Task<ActionResult> Index()
{
var user = System.Web.HttpContext.Current.User.Identity.GetUserId();
bool admin = db.Users.SingleOrDefault(y => y.Id.Equals("user")).IsAdministrator;
//return View(await db.Property.ToListAsync());
if (admin == true){
return View(await db.Property.Where(x => x.PropertyID == 1).ToListAsync()); }
else {
return View(await db.Property.ToListAsync());}
}
J'ai pu extraire l'UserID de l'utilisateur actuellement connecté, mais je veux un autre champ ou information de l'utilisateur qui est le champ IsAdmin qui est soit 1 OU 0.
Comment puis-je y parvenir ?
cela ne fonctionne pas
bool admin = db.Users.SingleOrDefault(y => y.Id.Equals("user")).IsAdministrator;