网站是MVC框架 登陆成功后用的ticket票据验证,现在要实现cookie过期后自动跳转到登陆页面。在哪里判断cookie是否过期呢?有没有相关代码供参考下
MVC有自带的Action FilterAttribute(AuthorizeAttribute).可以在base里继承这个类,然后重写OnAuthorization这个Function,每次请求Login Action都会做验证。具体操作你可以在重写的方法中实现。-Attribute的强大之处
还是上一段代码吧!如果能帮到你,后期不懂的可以再问@我:)
1 public class LoginFilterAttribute:AuthorizeAttribute 2 { 3 private static string formsCookieName = FormsAuthentication.FormsCookieName; 4 public class LoginFilterAttribute:AuthorizeAttribute 5 public override void OnAuthorization(AuthorizationContext filterContext) 6 { 7 HttpCookie formsCookie = 8 Web.CookieManager.GetCookie(formsCookieName); 9 if (formsCookie == null) 10 { 11 //redirect to login 12 RedirectToLoginPage(filterContext); 13 return; 14 } 15 16 FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(formsCookie.Value); 17 18 bool autenticated = HttpContext.Current.User.Identity.IsAuthenticated; 19 20 //long contactID; 21 if (!autenticated || //!long.TryParse(ticket.Name, out contactID)|| 22 !AgreementContext.SessionAccess()) 23 { 24 //redirect to login 25 RedirectToLoginPage(filterContext); 26 return; 27 } 28 29 } 30 }
在验证权限的地方.
系统这么多页面 不能一一验证吧
@927923690: 验证一般都只有一个地方吧.比如过滤器之类的
如果用的是自带的form auth.一个authorize attribute就完事了。可以放controller、action,或者global filter.