AOP面向切面编程: 错误日志 、全局日志记录、授权登录
全局日志记录:LogAttribute(执行前或者执行后记录操作记录)、LoggingHelper(创建日志文件并添加到数据库)、FilterConfig(全局设置,App_Start下添加类)、Log(数据库日志记录)、UserIDD(全局变量获取ID)
LogAttribute:
public class LogAttribute : FilterAttribute, IActionFilter
{
public void onActionExecuted(ActionExecutedContext filterContext)
{
string strControllerName = filterContext.RouteData.Values["controller"].ToString();
string strActionName = filterContext.RouteData.Values["action"].ToString();
string strName = filterContext.HttpContext.User.Identity.Name.ToString();
string strID = SignIn.Models.UserIDD.IDs.ToString();
Log entity = new Log()
{
OperationTime = DateTime.Now,
ControllerName = strControllerName,
ActionName = strActionName,
OperationUserName= strName,
OperationUserID = strID
};
// 记录操作记录
LoggingHelper.WriteOperRecore(entity);
}
public void onActionExecuting(ActionExecutingContext filterContext)
{
}
}
LoggingHelper:
public class LoggingHelper
{
public static void WriteOperRecore(Log log)
{
string strPath = @"C:log.txt";
using (StreamWriter sw = new StreamWriter(strPath, true))
{
sw.WriteLine("**************************");
sw.WriteLine($"操作时间:{log.OperationTime}");
sw.WriteLine($"当前Controller名称:{log.ControllerName}");
sw.WriteLine($"当前Action名称:{log.ActionName}");
sw.WriteLine($"当前操作用户:{log.OperationUserName}");
sw.WriteLine($"当前操作用户ID:{log.OperationUserID}");
sw.Close();
}
string sql = string.Format(@"insert into Log (ControllerName,ActionName, OperationUserName, OperationTime, OperationUserID)
values('{0}','{1}','{2}','{3}','{4}')",log.ControllerName, log.ActionName, log.OperationUserName, log.OperationTime, log.OperationUserID);
int num = DBHelper.ExecutNonQuery(sql);
if (num<0)
{
Console.WriteLine("错误");
}
}
}
FilterConfig:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new LogAttribute());//LogAttrbute是LogAttribute(执行前或者执行后记录操作记录)
}
}
并在Global.asax添加:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);//这个FilterConfig于FilterConfig(全局设置,App_Start下添加类)一致
}
}
Log:
public class Log
{
public string ControllerName { get; set; }
public string ActionName { get; set; }
public string OperationUserName { get; set; }
public DateTime OperationTime { get; set; }
public string OperationUserID { get; set; }
}
UserIDD:
public class UserIDD
{
public static int IDs;
}
授权登录:
用户名密码通过后颁发通行证:FormsAuthentication.SetAuthcookie(userName, true);
退出撤销通行证: FormsAuthentication.SignOut();
重定向:return Redirect("/Login/Index");
在Web.config里
需要登录之后才能进入的页面/动作方法加: [Authorize]



