我有点迷失了,我找不到解决办法。
我正在使用以下代码创建过滤器:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class SessionFilter :System.Web.Mvc.ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
我正在验证cookie是否存在,为空或空白或是否已过期以下代码:
if (filterContext.HttpContext.Request.Cookies["MyCookie"] == null ||
String.IsNullOrEmpty(filterContext.HttpContext.Request.Cookies["MyCookie"].Value) ||
(filterContext.HttpContext.Request.Cookies["MyCookie"].Expires < DateTime.Now &&
filterContext.HttpContext.Request.Cookies["MyCookie"].Expires != new DateTime()))
{
但即使在到期后的一天设置了到期值,cookie也已在此部分过期:
private void SetAuthenticationCookie(String username, String MyValue)
{
FormsAuthentication.SetAuthCookie(username.ToUpper(), false);
var cookie = FormsAuthentication.GetAuthCookie(username, false);
var ticket = FormsAuthentication.Decrypt(cookie.Value);
HttpCookie newCookie = new HttpCookie("MyCookie", MyValue);
newCookie.Expires = ticket.Expiration;
HttpContext.Current.Response.Cookies.Add(newCookie);
}
以下是Web.config上的配置:
<authentication mode="Forms">
<forms loginUrl="~/Login/SignIn/" protection="All" timeout="1440" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="/" cookieless="UseDeviceProfile" enableCrossAppRedirects="false" />
</authentication>
再次感谢你。