From a8fd59e247815e91880c1ab88e131b0fa39b9c40 Mon Sep 17 00:00:00 2001 From: yubaolee Date: Tue, 30 Aug 2016 20:12:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=81=A2=E5=A4=8Dinfrastructure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Infrastructure/Auth/CacheKey.cs | 20 ----- Infrastructure/Auth/CacheSession.cs | 79 ------------------- .../Auth/FormsAuthenticationService.cs | 48 ----------- Infrastructure/Auth/IAuthenticationService.cs | 31 -------- Infrastructure/Auth/UserContext.cs | 20 ----- Infrastructure/DIContainer.cs | 75 ------------------ Infrastructure/Infrastructure.csproj | 12 --- Infrastructure/MVC/AuthenticationAttribute.cs | 12 --- Infrastructure/MVC/JsonExceptionAttribute.cs | 24 ------ Infrastructure/MVC/LogExceptionAttribute.cs | 35 -------- Infrastructure/MVC/NoFilterAttribute.cs | 10 --- Infrastructure/MVC/UiResponse.cs | 44 ----------- Infrastructure/WebUtility.cs | 43 ---------- 13 files changed, 453 deletions(-) delete mode 100644 Infrastructure/Auth/CacheKey.cs delete mode 100644 Infrastructure/Auth/CacheSession.cs delete mode 100644 Infrastructure/Auth/FormsAuthenticationService.cs delete mode 100644 Infrastructure/Auth/IAuthenticationService.cs delete mode 100644 Infrastructure/Auth/UserContext.cs delete mode 100644 Infrastructure/DIContainer.cs delete mode 100644 Infrastructure/MVC/AuthenticationAttribute.cs delete mode 100644 Infrastructure/MVC/JsonExceptionAttribute.cs delete mode 100644 Infrastructure/MVC/LogExceptionAttribute.cs delete mode 100644 Infrastructure/MVC/NoFilterAttribute.cs delete mode 100644 Infrastructure/MVC/UiResponse.cs delete mode 100644 Infrastructure/WebUtility.cs diff --git a/Infrastructure/Auth/CacheKey.cs b/Infrastructure/Auth/CacheKey.cs deleted file mode 100644 index 5018e5f3..00000000 --- a/Infrastructure/Auth/CacheKey.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Web; - -namespace Infrastructure.Auth -{ - public class CacheKey - { - public static string SessionName = "OpenAuth"; - public static string UserSessionName = "Session_"; - private static string GetSessionId() - { - HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(SessionName); - string remoteBrowserIp = WebUtility.GetIP(); - return UserSessionName + remoteBrowserIp + ":" + cookie.Value; - } - public static string UserID - { - get { return GetSessionId(); } - } - } -} diff --git a/Infrastructure/Auth/CacheSession.cs b/Infrastructure/Auth/CacheSession.cs deleted file mode 100644 index e3c46428..00000000 --- a/Infrastructure/Auth/CacheSession.cs +++ /dev/null @@ -1,79 +0,0 @@ -using Infrastructure.Cache; -using System; -using System.Web; - -namespace Infrastructure.Auth -{ - public class CacheSession - { - ICache cache = DIContainer.Resolve(); - private HttpContext context; - public CacheSession(bool IsReadOnly) - { - this.IsReadOnly = IsReadOnly; - } - public CacheSession(HttpContext context, bool IsReadOnly, TimeSpan TimeOut, ICache cacheService) - { - this.context = context; - this.IsReadOnly = IsReadOnly; - this.TimeOut = TimeOut; - } - public CacheSession(HttpContext context, bool IsReadOnly) - { - this.context = context; - this.IsReadOnly = IsReadOnly; - GetSessionId(); - if (CacheKey.UserID != null) - { - var userInfo = cache.Get(CacheKey.UserID); - } - } - //获取会话是否已经验证通过 - public bool IsAuthenticated - { - get - { - if (cache.Get(SessionId) == null) - { - return false; - } - else - { - return true; - } - } - } - - //会话唯一Id - public string SessionId - { - get - { - return GetSessionId(); - } - } - public static string SessionName = CacheKey.SessionName; - public static string UserSessionName = CacheKey.UserSessionName; - //指示会话是否为只读,true为只读 - public bool IsReadOnly { get; set; } - //超时期限 - public TimeSpan TimeOut { get; set; } - private string GetSessionId() - { - HttpCookie cookie = context.Request.Cookies.Get(SessionName); - string remoteBrowserIp = WebUtility.GetIP(); - if (cookie == null || string.IsNullOrEmpty(cookie.Value)) - { - string newSessionId = Guid.NewGuid().ToString(); - HttpCookie newCookie = new HttpCookie(SessionName, newSessionId); - newCookie.HttpOnly = IsReadOnly; - context.Response.Cookies.Add(newCookie); - return UserSessionName + remoteBrowserIp + ":" + newSessionId; - } - else - { - return UserSessionName + remoteBrowserIp + ":" + cookie.Value; - } - } - } -} diff --git a/Infrastructure/Auth/FormsAuthenticationService.cs b/Infrastructure/Auth/FormsAuthenticationService.cs deleted file mode 100644 index f018f946..00000000 --- a/Infrastructure/Auth/FormsAuthenticationService.cs +++ /dev/null @@ -1,48 +0,0 @@ -using Infrastructure.Cache; -using System; -using System.Web; - -namespace Infrastructure.Auth -{ - /// - /// 身份认证服务实现(缓存可分布式部署) - /// - public class FormsAuthenticationService : IAuthenticationService - { - ICache cacheService; - CacheSession cacheSession; - HttpContext httpContext = HttpContext.Current; - //hpf 缓存相关 - public FormsAuthenticationService() - { - cacheService = DIContainer.Resolve(); - cacheSession = new CacheSession(httpContext, true); - } - /// - /// 获取当前认证的用户 - /// - /// 当前用户未通过认证则返回null - public dynamic GetAuthenticatedUser() - { - if (httpContext == null || !cacheSession.IsAuthenticated) - { - return null;//hpf未登录 - } - return cacheService.Get(cacheSession.SessionId); - } - - public void SignIn(string loginName, dynamic userInfo, TimeSpan expiration) - { - var sessionId = cacheSession.SessionId; - cacheService.Set(sessionId, userInfo, expiration); - } - - public void SignOut() - { - if (!string.IsNullOrEmpty(CacheKey.UserID)) - { - cacheService.Remove(CacheKey.UserID); - } - } - } -} diff --git a/Infrastructure/Auth/IAuthenticationService.cs b/Infrastructure/Auth/IAuthenticationService.cs deleted file mode 100644 index 9ef3b2dd..00000000 --- a/Infrastructure/Auth/IAuthenticationService.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Infrastructure.Auth -{ - /// - /// 用于身份认证接口 - /// - public interface IAuthenticationService - { - /// - /// 登录 - /// - /// 登录名 - /// 与登录名相关的用户信息 - /// 登录Cookie的过期时间,单位:分钟。 - void SignIn(string loginName, dynamic userInfo, TimeSpan expiration); - /// - /// 注销 - /// - void SignOut(); - /// - /// 获取当前登录的用户 - /// - /// 当前用户未通过认证则返回null - dynamic GetAuthenticatedUser(); - } -} diff --git a/Infrastructure/Auth/UserContext.cs b/Infrastructure/Auth/UserContext.cs deleted file mode 100644 index 7e623768..00000000 --- a/Infrastructure/Auth/UserContext.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Infrastructure.Auth -{ - /// - /// 当前登录用户相关 - /// - public class UserContext - { - public static dynamic CurrentUser - { - get - { - IAuthenticationService authenticationService = DIContainer.ResolvePerHttpRequest(); - var currentUser = authenticationService.GetAuthenticatedUser(); - if (currentUser != null) - return currentUser; - return null; - } - } - } -} diff --git a/Infrastructure/DIContainer.cs b/Infrastructure/DIContainer.cs deleted file mode 100644 index f3673c40..00000000 --- a/Infrastructure/DIContainer.cs +++ /dev/null @@ -1,75 +0,0 @@ -using Autofac; -using Autofac.Core; -using System.Web.Mvc; - -namespace Infrastructure -{ - /// - /// 依赖注入 - /// - public class DIContainer - { - private static IContainer iContainer; - public static void RegisterContainer(IContainer container) - { - iContainer = container; - } - /// - /// 按类型获取组件 - /// - /// - /// - public static Tservice Resolve() - { - return ResolutionExtensions.Resolve(iContainer); - } - /// - /// 按参数获取组件 - /// - /// - /// - /// - public static Tservice Resolve(params Parameter[] parameters) - { - return ResolutionExtensions.Resolve(iContainer, parameters); - } - /// - /// 按key获取组件 - /// - /// 组件类型 - /// 枚举类型的key - /// 返回获取的组件 - public static Tservice ResolveKeyed(object serviceKey) - { - return ResolutionExtensions.ResolveKeyed(iContainer, serviceKey); - } - /// - /// 按名称获取组件 - /// - /// - /// - /// - public static Tservice ResolveNamed(string serviceName) - { - return ResolutionExtensions.ResolveNamed(iContainer, serviceName); - } - /// - /// 获取InstancePerHttpRequest的组件 mvc - /// - /// - /// - public static Tservice ResolvePerHttpRequest() - { - IDependencyResolver current = DependencyResolver.Current; - if (current != null) - { - Tservice service = (Tservice)current.GetService(typeof(Tservice)); - if (service != null) - { - return service; - } - } - return ResolutionExtensions.Resolve(iContainer); - } - } -} diff --git a/Infrastructure/Infrastructure.csproj b/Infrastructure/Infrastructure.csproj index 477b5984..adce8b36 100644 --- a/Infrastructure/Infrastructure.csproj +++ b/Infrastructure/Infrastructure.csproj @@ -79,11 +79,6 @@ - - - - - @@ -91,7 +86,6 @@ - @@ -100,11 +94,6 @@ - - - - - @@ -112,7 +101,6 @@ - diff --git a/Infrastructure/MVC/AuthenticationAttribute.cs b/Infrastructure/MVC/AuthenticationAttribute.cs deleted file mode 100644 index fe420cc8..00000000 --- a/Infrastructure/MVC/AuthenticationAttribute.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Web; -using System.Web.Mvc; - -namespace Infrastructure.MVC -{ - /// - /// 登录验证 - /// - public class AuthenticationAttribute: AuthorizeAttribute - { - } -} diff --git a/Infrastructure/MVC/JsonExceptionAttribute.cs b/Infrastructure/MVC/JsonExceptionAttribute.cs deleted file mode 100644 index 36f91484..00000000 --- a/Infrastructure/MVC/JsonExceptionAttribute.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Web.Mvc; - -namespace Infrastructure.MVC -{ - /// - /// 加入action级ajax请求发生500内部错误时返回给浏览器json提示 - /// - [AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = false)] - public class JsonExceptionAttribute : HandleErrorAttribute - { - public override void OnException(ExceptionContext filterContext) - { - if (!filterContext.ExceptionHandled) - { - //返回异常json - filterContext.Result = new JsonResult - { - Data = new UiResponse { statusCode = "300", message = filterContext.Exception.Message } - }; - } - } - } -} diff --git a/Infrastructure/MVC/LogExceptionAttribute.cs b/Infrastructure/MVC/LogExceptionAttribute.cs deleted file mode 100644 index c308761b..00000000 --- a/Infrastructure/MVC/LogExceptionAttribute.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web.Mvc; - -namespace Infrastructure.MVC -{ - /// - /// 加入全局异常处理500内部错误 - /// - [AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)] - public class LogExceptionAttribute : HandleErrorAttribute - { - public override void OnException(ExceptionContext filterContext) - { - if (!filterContext.ExceptionHandled) - { - string controllerName = filterContext.RouteData.Values["controller"].ToString(); - string actionName = filterContext.RouteData.Values["action"].ToString(); - string msgTemp = WebUtility.GetIP() + "在执行controller" + controllerName + "的" + actionName + "时产生异常:" + filterContext.Exception.Message; - //hpf此处写入异常日志 - LogHelper.Fatal(msgTemp); - } - if (filterContext.Result is JsonResult) - { - filterContext.ExceptionHandled = true;//异常已处理 - } - else - { - //通过base返回系统默认异常处理上向错误页面跳转 - base.OnException(filterContext); - } - } - } -} diff --git a/Infrastructure/MVC/NoFilterAttribute.cs b/Infrastructure/MVC/NoFilterAttribute.cs deleted file mode 100644 index f5d6141e..00000000 --- a/Infrastructure/MVC/NoFilterAttribute.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; - -namespace Infrastructure.MVC -{ - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - public class NoFilterAttribute : Attribute - { - public NoFilterAttribute() { } - } -} diff --git a/Infrastructure/MVC/UiResponse.cs b/Infrastructure/MVC/UiResponse.cs deleted file mode 100644 index 085d5bf9..00000000 --- a/Infrastructure/MVC/UiResponse.cs +++ /dev/null @@ -1,44 +0,0 @@ - -namespace Infrastructure.MVC -{ - /// - /// 前端框架ajax错误返回 - /// - public class UiResponse - { - public string statusCode - { - get; set; - - } - - public string message - { - get; set; - - } - - public string tabid - { - get; set; - - } - - public bool closeCurrent - { - get; set; - - } - public string forward { get; set; } - public string forwardConfirm { get; set; } - public UiResponse() - { - statusCode = "200"; - message = "操作成功"; - tabid = ""; - closeCurrent = false; - forward = ""; - forwardConfirm = ""; - } - } -} diff --git a/Infrastructure/WebUtility.cs b/Infrastructure/WebUtility.cs deleted file mode 100644 index 2c811feb..00000000 --- a/Infrastructure/WebUtility.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Web; - -namespace Infrastructure -{ - public static class WebUtility - { - /// - /// 获取IP地址 - /// - /// 返回获取的ip地址 - public static string GetIP() - { - return GetIP(HttpContext.Current); - } - /// - /// 透过代理获取真实IP - /// - /// HttpContext - /// 返回获取的ip地址 - public static string GetIP(HttpContext httpContext) - { - string userHostAddress = string.Empty; - if (httpContext != null) - { - userHostAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; - if (string.IsNullOrEmpty(userHostAddress)) - { - userHostAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; - } - if (string.IsNullOrEmpty(userHostAddress)) - { - userHostAddress = HttpContext.Current.Request.UserHostAddress; - } - } - return userHostAddress; - } - } -}