第一步
在商城项目里新建一个过滤器文件夹。
第二步
在过滤器文件夹添加一个异常过滤器类和身份验证过滤器类。代码如下:
身份验证过滤器
public class Jurisdiction : AuthorizeAttribute
{
/// <summary>
/// 判断验证是否通过
/// </summary>
/// <param name="httpContext"></param>
/// <returns></returns>
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
///如果上下文和session不为空
if (UserContext.User.UserInfo != null && httpContext.Session != null)
{
return true;
}
return false;
}
/// <summary>
/// 判断不通过时做的操作
/// </summary>
/// <param name="filterContext"></param>
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
///获取请求地址
string path = filterContext.HttpContext.Request.Path;
///自定义路由
Dictionary<string, object> keys = new Dictionary<string, object>();
keys.Add("Controller", "Home");
keys.Add("Action", "Login");
keys.Add("ReturnUrl", path);
var revalue = new RouteValueDictionary(keys);
///根据路由跳转
filterContext.Result = new RedirectToRouteResult(revalue);
}
}
异常过滤器
///异常过滤器
public class ExceptionAttribute: HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
///获取系统异常
string exception = filterContext.Exception.ToString();
///记录日志
string msg = $"时间:{DateTime.Now},系统出错{exception}";
///文件路径
string path = @"D:\\Admin.txt";
//文件写入
if (!File.Exists(path))
{
File.Create(path);
}
File.AppendAllText(path, msg);
}
}
第三步
调用身份验证过滤器,(异常过滤器不需要调用)
///在你想要加的方法外加[身份验证过滤器类名]
[Jurisdiction]
public ActionResult Function()
{
return View();
}