好吧,好吧。出于某种原因,此cookie将被删除/覆盖。
它确实存在了一段时间。好吧,对于代码2的一个周期,但是当通过页面加载再次调用代码2时,它不包含我的数据。
cookie包含的是一个编码的会话ID,用于确定该用户是谁以及他们是否是管理员。
如果它没有用于比较的sessionID,它会将用户引导到登录页面。
假设用户角色设置为1。
代码1:http://pastebin.com/rfP7se0x
代码2:http://pastebin.com/c2Jy7zQ1(剥离了与cookie无关的代码。)
代码3:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FormsAuthenticateProject.Customer
{
public partial class Customer : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DBConnLayer DBCL = new DBConnLayer();
DBCL.userRoleRedirect();
}
}
}
}
答案 0 :(得分:0)
在userRoleRedirect
(http://pastebin.com/c2Jy7zQ1)内,您正在进行以下条件检查:
else if (ckDateTime.CompareTo(DateTime.Now) > 0)
您需要检查这是否会评估为true。我怀疑cookie到期时间意味着Now
与cookie到期时间之间的差异不会超过0.罪魁祸首可能在以下代码中,它解析了到期时间:
DateTime.TryParseExact(myCookie.Values["LogoutTimer"], DTFormat,
CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out ckDateTime);
答案 1 :(得分:0)
这个答案已在这里得到解答:cookie values disappear when traversing between content pages
我将此代码添加到userRoleRedirect
的第一行if (Request.Cookies["Session"] != null)
{
Response.Cookies.Set(Request.Cookies["Session"]);
}
和HttpCookie myCookie = Request.Cookies["Session"];
至
var myCookie = Request.Cookies["Session"].Values;
我使用左myCookie["ValueName"]
来获取值
它返回一个字符串。