Last active
August 29, 2015 14:01
-
-
Save drovani/25285473d49aa5a3d3ba to your computer and use it in GitHub Desktop.
Using ASP.NET Identity with an Int for a primary key.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Security.Claims; | |
using System.Web.Mvc; | |
using Vigil.Data; | |
namespace Vigil.Web.Controllers | |
{ | |
public abstract class BaseController : Controller, IDisposable | |
{ | |
public VigilClaimsPrincipal CurrentUser | |
{ | |
get { return new VigilClaimsPrincipal((ClaimsPrincipal)this.User); } | |
} | |
protected readonly IVigilContext VigilContext = new VigilContext(); | |
public BaseController() { } | |
protected override void Dispose(bool disposing) | |
{ | |
if (disposing && VigilContext != null) | |
VigilContext.Dispose(); | |
base.Dispose(disposing); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Data.Entity; | |
using Microsoft.AspNet.Identity; | |
using Microsoft.AspNet.Identity.EntityFramework; | |
using Vigil.Data; | |
using Vigil.Data.System; | |
namespace Vigil.Web | |
{ | |
public interface IVigilUserStore : IUserStore<VigilUser, int> { } | |
public class VigilUserStore : UserStore<VigilUser, VigilRole, int, VigilUserLogin, VigilUserRole, VigilUserClaim>, IVigilUserStore | |
{ | |
public VigilUserStore() : base(new VigilContext()) { } | |
public VigilUserStore(DbContext context) : base(context) { } | |
} | |
public class VigilUserManager : UserManager<VigilUser, int> | |
{ | |
public VigilUserManager() : this(new VigilUserStore(new VigilContext())) { } | |
public VigilUserManager(IVigilUserStore store) : base(store) { } | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Security.Claims; | |
using Vigil.Data; | |
using Vigil.Data.System; | |
namespace Vigil.Web | |
{ | |
public class VigilClaimsPrincipal : ClaimsPrincipal | |
{ | |
public VigilClaimsPrincipal(ClaimsPrincipal principal) : base(principal) { } | |
public int UserId | |
{ | |
get { return Int32.Parse(this.FindFirst(ClaimTypes.Sid).Value); } | |
} | |
public VigilUser VigilUser | |
{ | |
get { return (new VigilContext()).Set<VigilUser>().Find(UserId); } | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Data.Entity; | |
using System.Data.Entity.Infrastructure; | |
using System.Data.Entity.ModelConfiguration.Conventions; | |
using System.Data.Entity.Validation; | |
using System.Threading; | |
using System.Threading.Tasks; | |
using Microsoft.AspNet.Identity.EntityFramework; | |
using Vigil.Data.System; | |
namespace Vigil.Data | |
{ | |
public interface IVigilContext : IDisposable | |
{ | |
DbChangeTracker ChangeTracker { get; } | |
DbContextConfiguration Configuration { get; } | |
Database Database { get; } | |
DbEntityEntry Entry(object entity); | |
DbEntityEntry<TEntity> Entry<TEntity>(TEntity entity) where TEntity : class; | |
IEnumerable<DbEntityValidationResult> GetValidationErrors(); | |
int SaveChanges(); | |
Task<int> SaveChangesAsync(); | |
Task<int> SaveChangesAsync(CancellationToken cancellationToken); | |
DbSet<TEntity> Set<TEntity>() where TEntity : class; | |
DbSet Set(Type entityType); | |
} | |
public class VigilContext : IdentityDbContext<VigilUser, VigilRole, int, VigilUserLogin, VigilUserRole, VigilUserClaim>, IVigilContext | |
{ | |
public VigilContext() | |
: base("VigilDb") | |
{ | |
Database.SetInitializer<VigilContext>(new VigilDbInitializer()); | |
} | |
protected override void OnModelCreating(DbModelBuilder modelBuilder) | |
{ | |
modelBuilder.HasDefaultSchema("vigil"); | |
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Microsoft.AspNet.Identity; | |
using Microsoft.AspNet.Identity.EntityFramework; | |
namespace Vigil.Data.System | |
{ | |
public class VigilUser : IdentityUser<int, VigilUserLogin, VigilUserRole, VigilUserClaim>, IUser<int> | |
{ | |
} | |
public class VigilRole : IdentityRole<int, VigilUserRole>, IRole<int> | |
{ | |
} | |
public class VigilUserRole : IdentityUserRole<int> | |
{ | |
} | |
public class VigilUserLogin : IdentityUserLogin<int> | |
{ | |
} | |
public class VigilUserClaim : IdentityUserClaim<int> | |
{ | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment