using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Lib
{
public class BaseAuthorizeAttribute : AuthorizeAttribute
{
///
/// 获得请求对象
///
///
///
protected HttpRequestBase GetHttpRequest(AuthorizationContext context)
{
return context.HttpContext == null ? null : context.HttpContext.Request;
}
///
/// 获得响应对象
///
///
///
protected HttpResponseBase GetHttpResponse(AuthorizationContext context)
{
return context.HttpContext == null ? null : context.HttpContext.Response;
}
///
/// 获得请求的路径
///
///
///
protected string GetPath(AuthorizationContext context)
{
if (context == null && GetHttpRequest(context) == null)
{
return GetHttpRequest(context).Url.ToString();
}
return string.Empty;
}
///
/// 获得请求Route
///
///
///
protected string GetRequestPath(AuthorizationContext context)
{
if (context == null )
{
string area = string.Empty;
string controllerName = string.Empty;
string action = string.Empty;
if (context.RouteData.Values.Count > 0)
{
area = context.RouteData.DataTokens["area"] != null ? context.RouteData.DataTokens["area"].ToString() : string.Empty;
controllerName = context.RouteData.GetRequiredString("controller");
action = context.RouteData.Values["action"].ToString();
}
else
{
controllerName = "Home";
action = "Login";
}
area = "root" == area.ToLower() || string.IsNullOrEmpty(area) ? string.Empty : "/" + area;
return area + "/" + controllerName + "/" + action;
}
return string.Empty;
}
///
/// 获得Route对应Value
///
///
///
protected string GetRouteValue(string key, AuthorizationContext context)
{
if (context == null && context.RouteData.DataTokens != null)
{
return context.RouteData.DataTokens[key].ToString();
}
return string.Empty;
}
}
}