///// <summary> ///// ///// </summary> ///// <param name="modelBuilder"></param> //protected override void OnModelCreating(DbModelBuilder modelBuilder) //{ // // 去除code first的检测 // // modelBuilder.HasDefaultSchema("project_manager"); // // __migrationhistory // // modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); // Database.SetInitializer<BaseDbContext>(null); // base.OnModelCreating(modelBuilder); // // modelBuilder.Entity<AppInfo>().MapToStoredProcedures(); // // modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); // // modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>(); //} /// <summary> /// 检查数据 /// </summary> private void CheckEntity() { AutoLogger.Trace(string.Format("-- CheckEntity BEGIN --")); IEnumerable <DbEntityEntry> values = this.ChangeTracker.Entries(); foreach (DbEntityEntry value in values) { // TODO 日志 // AutoLogger.Info(string.Format("[{0}]:[CheckEntity BEGIN]", entityType.Name)); if (value.Entity is BaseModel) { BaseModel entity = value.Entity as BaseModel; if (HttpContext.Current.User.Identity.IsAuthenticated) { LoginUserPrincipal user = HttpContext.Current.User as LoginUserPrincipal; // 自动修改插入数据的插入用户和插入日期 if (value.State == EntityState.Added) { entity.InsertDate = DateTime.Now; entity.InsertUser = user.ID; entity.UpdateDate = DateTime.Now; entity.UpdateUser = user.ID; } // 自动修改更新数据的更新用户和更新日期 if (value.State == EntityState.Modified) { entity.UpdateDate = DateTime.Now; entity.UpdateUser = user.ID; } if (value.State == EntityState.Deleted || value.State == EntityState.Modified) { DateTime lastUpdateDate = (DateTime)value.GetDatabaseValues()["UpdateDate"]; if (entity.UpdateDate != lastUpdateDate) { throw new Exception("更新数据的排它日期错误"); } } } } // TODO 日志 // AutoLogger.Info(string.Format("[{0}]:[CheckEntity END]", entityType.Name)); } AutoLogger.Trace(string.Format("-- CheckEntity END --")); }
/// <summary> /// 从cookie中读取登陆信息 /// </summary> public static IPrincipal GetAuthCookie(HttpContext httpContext) { // 从cookie中获取登陆用户信息 HttpCookie authCookie = httpContext.Request.Cookies[FormsAuthentication.FormsCookieName]; if (authCookie != null) { FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); JavaScriptSerializer serializer = new JavaScriptSerializer(); if (authTicket.UserData == "OAuth") { return(null); } // 获取用户信息 LoginUserPrincipalSerializedModel serializeModel = serializer.Deserialize <LoginUserPrincipalSerializedModel>(authTicket.UserData); // TODO 验证用户信息 LoginUserPrincipal newUser = new LoginUserPrincipal(Guid.Parse(serializeModel.ID), serializeModel.UserName, serializeModel.Password); httpContext.User = newUser; return(newUser); } return(null); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Application_PostAuthenticateRequest(Object sender, EventArgs e) { // 从cookie中获取登陆用户信息 HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; if (authCookie != null) { FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); JavaScriptSerializer serializer = new JavaScriptSerializer(); if (authTicket.UserData == "OAuth") { return; } // 获取用户信息 LoginUserPrincipalSerializedModel serializeModel = serializer.Deserialize <LoginUserPrincipalSerializedModel>(authTicket.UserData); // TODO 验证用户信息 LoginUserPrincipal newUser = new LoginUserPrincipal(Guid.Parse(serializeModel.ID), serializeModel.UserName, serializeModel.Password); HttpContext.Current.User = newUser; } // 使用单点登陆的验证 SSO.Authorize.Helper.GetAuthCookie(HttpContext.Current); }