当前位置:编程学习 > C#/ASP.NET >>

【菜鸟送分】自定义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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,