public override void OnActionExecuting(ActionExecutingContext filterContext) { //Stores the Request in an Accessible object var request = filterContext.HttpContext.Request; //Generate the appropriate key based on the user's Authentication Cookie //This is overkill as you should be able to use the Authorization Key from //Forms Authentication to handle this. var sessionIdentifier = string.Join("", MD5.Create().ComputeHash(Encoding.ASCII.GetBytes(request.Cookies[FormsAuthentication.FormsCookieName].Value)).Select(s => s.ToString("x2"))); //Generate an audit Audit audit = new Audit() { SessionID = sessionIdentifier, AuditID = Guid.NewGuid(), IPAddress = request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? request.UserHostAddress, URLAccessed = request.RawUrl, TimeAccessed = DateTime.UtcNow, UserName = (request.IsAuthenticated) ? filterContext.HttpContext.User.Identity.Name : "Anonymous", Data = SerializeRequest(request) }; //Stores the Audit in the Database AuditingContext context = new AuditingContext(); context.AuditRecords.Add(audit); context.SaveChanges(); base.OnActionExecuting(filterContext); }
public ActionResult AuditRecords() { var audits = new AuditingContext().AuditRecords.OrderBy(a => a.TimeAccessed); return View(audits); }