Пример #1
0
        ///// <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 --"));
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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);
        }