【菜鸟送分】自定义form验证票据不成功,是不是少了什么
namespace user
{
public class MyCookies
{
public static HttpCookie SendCookie(string userid,string name, string receiver,string loginip,string logintime)
{
//创建一个票证实例
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2, userid, DateTime.Now, DateTime.Now.AddDays(1), true,userid);
//创建加密的COOKIE身份验证票证
string hashTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashTicket);
cookie.Values["userid"] = userid;
cookie.Values["usermail"] = name;
cookie.Values["receiver"] = receiver;
cookie.Values["loginip"] = loginip;
cookie.Values["logintime"] = logintime;
cookie.Expires = DateTime.Now.AddDays(1);
return cookie;
}
}
}
以下是使用时的代码
Response.Cookies.Add(MyCookies.SendCookie(dr.GetValue(0).ToString(), dr.GetValue(1).ToString(),dr.GetValue(2).ToString(),ClinentIP.ClientIP,DateTime.Now.ToString()));
但是仍然无易做图常登陆,这是什么原因呢,是不是少了什么关键性的东西,造成登陆票据并没有建立起来呢?求高手指导 --------------------编程问答-------------------- 这个最好使用cookie集合:
http://www.cnblogs.com/insus/articles/2055531.html --------------------编程问答-------------------- 还是form验证添加票据的问题,能有人帮帮忙吗?他和浏览器cookie不太一样的 --------------------编程问答-------------------- 看看你的浏览器设置是不是有问题 --------------------编程问答-------------------- 看来用这个功能的还真是不多,那大家平时登陆那一块都用什么呢?自己写代码验证,还是用session呢? --------------------编程问答-------------------- 郁闷,没人懂吗?看来只能无满意结贴了 --------------------编程问答-------------------- 继续求解答!没人会form验证吗?这个功能蛮实用的啊,难道大家的登陆都是自己写验证? --------------------编程问答-------------------- 这句 HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashTicket);
是申名一个cookie.
多值cookie
==> HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName);
--------------------编程问答-------------------- 先固定一下值试试,可能Cookies被重写导致登录不上的吧 检查一下。。
--------------------编程问答--------------------
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, username, DateTime.Now, DateTime.Now.AddMinutes(30), false, "Company_User");
//把验证票加密
string hashTicket = FormsAuthentication.Encrypt(ticket);
//设置验证票cookie,第一个参数为cookie的名字,第二个参数为cookie的值也就是加密后的票
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashTicket);
//设置cookie的有效期是一个星期
//cookie.Expires = DateTime.Now.AddDays(1);
//把cookie加进Response对象发送到客户端
Response.Cookies.Add(cookie);
if (HttpContext.Current.User.IsInRole("Person_User"))
{
Response.Write("个人用户!");
}
string requestUrl = FormsAuthentication.GetRedirectUrl(FormsAuthentication.FormsCookieName, false);
//不要使用FormsAuthentication.RedirectFromLoginPage方法,因为这个方易做图重写cookie
//重新定向到请求的url
Response.Redirect(requestUrl);
}
else
{
Response.Write("用户名或密码错误!");
}
……
Response.Cookies.Add(cookie);
FormsAuthentication.RedirectFromLoginPage(usr, false);//最主要的是这句,这句跳转才能带着刚才定义的cookie票据
或者你想来个简单的就用一句就可以
FormsAuthentication.SetAuthCookie(usr, false);
--------------------编程问答--------------------
FormsAuthentication.RedirectFromLoginPage(usr, false);
最好在web.config的forms认证里面加上一句默认跳转的url,这样的话没有用户返回URL的话就会跳转到定义的默认URL里面。
<forms …… defaultUrl="跳转的默认路径" /> --------------------编程问答-------------------- 等我取按照各位大虾的方法试验一下再回来结贴
补充:.NET技术 , ASP.NET