发表评论
好像有问题...
重新登陆后,发表评论的时候得手动写姓名,主页和验证码.
不如以前方便:(
是不是没修改啊?
咦,现在好了..
不过,主页里填的是以前的地址.不是新的二级域名:)
#3楼 [
楼主]2005-07-05 00:44 |
@hbifts
登录的问题应该好了, 你再试试。
发表评论时主页地址已经改过来了, 谢谢你发现这个问题。
注销有点问题。
还有就是想问FormsAuthentication.SetAuthCookie后,客户端才有.DottextCookie。
要再次提交到相同的域名才可能使用
HttpCookie cookie = Request.Cookies[".DottextCookie"];
if(cookie!=null)
{
cookie.Domain = ".cnblogs.com";
Response.Cookies.Add(cookie);
}
改变CookieDomain。
举例:我从登陆www.cnblogs.com,登陆以后转到lw.cnblogs.com就无法得到Cookie了。当然我只是做假设
同问,呵呵
好象博客园现在左边菜单打开的速度非常慢
#7楼 [
楼主]2005-07-05 10:04 |
@天生钝刀
注销的问题已经解决。
登录是在www.cnblogs.com域名下进行的。
@wwonion
在DNS服务器中设置泛域名解析。
@- -
那是Google广告引起的。
dudu,不得已在这里提问。
为什么我不能登陆我的blog了?也没有什么报错,填了用户名、密码和验证码以后没有什么反应,重新又跳转至登陆页面,只是这次验证码图片不能正常显示,出现一个“×”。
为什么呀?我试了很多次,internet选项都恢复了N次,还是不行。
#9楼 [
楼主]2005-07-05 10:54 |
@心仪
现在你可以登录了。
非常抱歉!是二级域名带来的问题。
#11楼 [
楼主]2005-07-05 11:23 |
@NoFile
好方法!非常感谢!
#13楼 [
楼主]2005-07-05 11:39 |
@心仪
用IE的刷新按钮刷新试试。我这里测试了, 可以正常显示。
今天一早看了dudu还深陷subDomain和Forms验证登录的泥潭中,深感同情,因为我曾经也处理多个网站共享用户已登录信息(通过cookie的subdomain实现),故今早趁空闲时间研究一番! 请dudu参照下面的code处理,应该能解决问题(我已经在我本机测试通过,请把zendyhu.com替换为cnblogs.com):
在任何登录处代码:
//the following code block equal to "FormsAuthentication.RedirectFromLoginPage + change cookie domain "
FormsAuthentication.SetAuthCookie(txtName.Text,false);
HttpCookie lcookie = Context.Response.Cookies[FormsAuthentication.FormsCookieName];
lcookie.Domain = ".zendyhu.com";
Response.Redirect(FormsAuthentication.GetRedirectUrl(txtName.Text,false));
在任何注销处的代码:
//set the cookie to expired
FormsAuthentication.SignOut();
//get the expired cookie
HttpCookie lcookie2 = Context.Response.Cookies[FormsAuthentication.FormsCookieName];
//set the cookie Domain
lcookie2.Domain = ".zendyhu.com";
Response.Redirect("user.aspx");
真的不行,我试过很多种清空缓存的方法,但结果还是不行。
虽然用刷新按钮,可以看到每次验证码都会改变,但那是假相。你点击“新随笔”、“联系”就会看到验证码图片位置处显示“×”。
@dudu:
FormsAuthentication.SetAuthCookie后添加下属代码
HttpCookie cookie = Request.Cookies[".DottextCookie"];
if(cookie!=null)
{
cookie.Domain = ".cnblogs.com";
Response.Cookies.Add(cookie);
} ”是否是笔误。因为在FormsAuthentication.SetAuthCookie之后,cookie只是被加入了Response的cookies队列中而已,我想正确的代码应该如下:
FormsAuthentication.SetAuthCookie(txtName.Text,false);
HttpCookie lcookie = Context.Response.Cookies[FormsAuthentication.FormsCookieName];
lcookie.Domain = ".cnblogs.com";
详细解释可查看“在Forms验证模式下,实现多个站点(SubDomain相同)共享同一用户登录状态 http://caomao.cnblogs.com/archive/2005/07/05/186606.html”
#17楼 [
楼主]2005-07-05 14:09 |
@心仪
你换台电脑或者用Firefox试试, 可能是你的浏览器有问题。
#18楼 [
楼主]2005-07-05 14:18 |
@Zendy
谢谢你的帮助。
我的代码也是可行的, 我测试过, 而且在博客园用了一段时间。
NoFile所说的方法是最简单有效的方法, 现在已经采用他所说的方法, 这样就不需要对cookie进行专门处理, 直接用FormsAuthentication.SetAuthCookie就行了。
#19楼 [
楼主]2005-07-05 14:24 |
#21楼 [
楼主]2005-07-05 18:37 |
#22楼 [
楼主]2005-07-05 21:51 |
FormsAuthentication.SetAuthCookie(txtName.Text,false);
HttpCookie lcookie = Context.Response.Cookies[FormsAuthentication.FormsCookieName];
lcookie.Domain = ".cnblogs.com";
这么做的话,我如果要想在本地测试这个程序,登陆的时候怎么办啊?
lcookie.Domain = "localhost";
这样是不行的
lcookie.Domain = "";
也不行
#24楼 [
楼主]2005-07-13 11:25 |
本地测试需要通过域名访问, 可以在host文件中添加域名解析, 并在IIS中配置相应的主机头。
这个我当然知道,但是这个是指我的机器上的host文件
如果别人通过局域网访问我的机器,除非他也修改它的host文件,否则也是不行
但是最初的时候不指定domain的时候,别人可以通过局域网的机器名就可以访问并且登陆,我是想说,怎么能够仅仅是设置一下lcookie.Domain,就能够让本地能够通过
http://localhost登陆?
#26楼 [
楼主]2005-07-13 11:56 |
在代码中判断一下, 如果是通过localhost域名登录, 就把Cookie的确良Domain设置为localhost。
@dudu
"本地测试需要通过域名访问, 可以在host文件中添加域名解析, 并在IIS中配置相应的主机头。
"
这一段话 不明白呀,能否具体点??
注册用户的时候直接生成二级域名的.net源代码如何实现?谢谢
请问,如果不同的二级域名对应的应用程序所属程序集不一样,一个是.net1.1 另一个是.net2.0 它们之间为什么无法实现Cookie共享呢,?
请帮我看看
这是website1的配置文件
<authentication mode="Forms">
<forms name="EOMemberShipUser" loginUrl="index.aspx" protection="All"></forms>
</authentication>
按登录 按扭 执行
protected void Button1_Click(object sender, EventArgs e)
{
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "wmj", DateTime.Now, DateTime.Now.AddMinutes(60), true, "User");
string cookieStr = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieStr);
cookie.Expires = ticket.Expiration;
//cookie.Path = FormsAuthentication.FormsCookiePath;
cookie.Domain = ".hnczjsxy.cn";
Response.Cookies.Add(cookie);
Response.Redirect("Default.aspx", false);
}
下面是website2的配置文件
<authentication mode="Forms">
<forms name="EOMemberShipUser" domain=".hnczjsxy.cn" loginUrl="index.aspx" protection="All"></forms>
</authentication>
website2的首页的LOAD方法
protected void Page_Load(object sender, EventArgs e)
{
if (Request.IsAuthenticated)
{
Response.Redirect("~/Default.aspx", false);
}
else
{
Response.Redirect("~/ErrorPage.aspx", false);
}
}
说明 website1和website2的域名 分别是www.hnczjsxy.cn/和bbs.hnczjsxy.cn/
且不在同一台虚礼主机上,
请帮我看看
这是我的email =wmj2212@126.com
如果可能,请给DEMO给我,拜托了
不同域名之间如何实现呢?请dudu指教
比如abc.com和abc.net之间共用一套会员体系,如何认证及写COOKIE?
像搜狐那样,SOHU,SOGOU,CHINAREN共用
HttpCookie myCookie = new HttpCookie(CookieName);
myCookie.Domain = System.Configuration.ConfigurationManager.ConnectionStrings["domain"].ConnectionString;
...........................
一开始就设置起