我要做一个跨网站注册通行证程序。偶参考了国内各大网站,大多都是生成2个COOKIES来实现用户登陆与注销退的。
======================================================================================
c# 为什么这样写不能生成如Cookies:[email protected] 的cookies文件?
而不加cookie.Domain="login.x77.com"; 这一句的话,就能生成如下图的cookies文件: 图片地址: http://www.stqq.net/02.jpgHttpCookie cookie=Response.Cookies["danislogin"];
cookie.Domain="login.x77.com"; //请问我错在哪里?
cookie["danisuser"]=userid.Text;
cookie.Expires=DateTime.Now.AddDays(10);
Response.Cookies.Add(cookie);========================================================
现在的问题是,如何生成指定域名的COOKIES文件? 并在另一网站下调用他们?
======================================================================================
c# 为什么这样写不能生成如Cookies:[email protected] 的cookies文件?
而不加cookie.Domain="login.x77.com"; 这一句的话,就能生成如下图的cookies文件: 图片地址: http://www.stqq.net/02.jpgHttpCookie cookie=Response.Cookies["danislogin"];
cookie.Domain="login.x77.com"; //请问我错在哪里?
cookie["danisuser"]=userid.Text;
cookie.Expires=DateTime.Now.AddDays(10);
Response.Cookies.Add(cookie);========================================================
现在的问题是,如何生成指定域名的COOKIES文件? 并在另一网站下调用他们?
解决方案 »
- Vs2005与数据库连接错误集合
- urlrewrite重写问题???
- JQuery easyui导致基本的ASP.NET事件失效
- 数据分列显示
- 高手,高分,一个数据库的设计,一个会员开通时间的设置,多次开通,每次可以间隔开通
- 在c#.net中如何将刷卡机或读卡机在刷卡时的数据写入数据库,请由此经验的给予指教,不胜感激!!!!
- 初学ASP.NET,拜师傅结交兄弟姐妹
- 下面是Web.config文件,我想把下面ACCESS数据,改成SQL数据库,如何改?
- 加载水晶报表出现:“登录失败”
- 紧急!SQL SERVER数据库中的信息如何读出
- 如何用后台代码实现焦点设置?
- 又一个送分题(十分钟以内结贴,即五点准时结贴):一个整数除以另外一个整数,我想得到整数的商,不是四舍五入,直接去小数点)
HELP!!!
Domain不行的话cookie["danisuser"].path可不可以呢?
不乱了套了?这隐私团体第一个就不放过你啊参考单一登陆(Single Sign-on)问题
http://blog.joycode.com/saucer/archive/2004/02/25/13789.aspx
public class SessionPage : System.Web.UI.Page
{
...
public new mySession Session = null;
...
} 自定义的对话类使用HybridDictionary对象来相应保存内存中的对话状态(HybridDictionary可用于处理任意数量的对话元素)。为了与传统的ASP通用,该自定义对话对象将限制对话数据类型为字符串型(默认的HttpSession允许对话保存任意类型的数据,不能与传统的ASP通用)。
[Serializable]
public class mySession
{
private HybridDictionary dic = new HybridDictionary(); public mySession()
{
} public string this [string name]
{
get
{
return (string)dic[name.ToLower()];
}
set
{
dic[name.ToLower()] = value;
}
}
}
Page类为定制暴露了不同的事件和方法。特别是OnInit方法用于设置Page对象的初始化状态。如果请求不包含名为mySession的Cookie,将为请求者产生一个新的mySession Cookie。另外,对话数据将使用自定义数据访问对象SessionPersistence从SQL Server中检索出来。DSN和SessionExpiration的值从web.config中检索。
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
cookie = this.Request.Cookies[sessionPersistence.SessionID]; if (cookie == null)
{
Session = new mySession();
CreateNewSessionCookie();
IsNewSession = true;
}
else
Session = sessionPersistence.LoadSession(
Server.UrlDecode(cookie.Value).ToLower().Trim(),
dsn,
SessionExpiration
); this.Unload += new EventHandler(this.PersistSession);
}
private void CreateNewSessionCookie()
{
cookie = new HttpCookie(sessionPersistence.SessionID,
sessionPersistence.GenerateKey());
this.Response.Cookies.Add(cookie);
}
SessionPersistence类使用微软.NET框架组件的BinaryFormatter来串行化和并行化对话状态为二进制格式以提供最佳性能。结果的二进制对话数据接着作为图象字段类型被存入SQL Server。
public mySession LoadSession(string key, string dsn,
int SessionExpiration)
{
SqlConnection conn = new SqlConnection(dsn);
SqlCommand LoadCmd = new SqlCommand();
LoadCmd.CommandText = command;
LoadCmd.Connection = conn;
SqlDataReader reader = null;
mySession Session = null; try
{
LoadCmd.Parameters.Add("@ID", new Guid(key));
conn.Open();
reader = LoadCmd.ExecuteReader();
if (reader.Read())
{
DateTime LastAccessed =reader.GetDateTime(1).AddMinutes(SessionExpiration);
if (LastAccessed >= DateTime.Now)
Session = Deserialize((Byte[])reader["Data"]);
}
}
finally
{
if (reader != null)
reader.Close();
if (conn != null)
conn.Close();
} return Session;
}
private mySession Deserialize(Byte[] state)
{
if (state == null) return null; mySession Session = null;
Stream stream = null; try
{
stream = new MemoryStream();
stream.Write(state, 0, state.Length);
stream.Position = 0;
IFormatter formatter = new BinaryFormatter();
Session = (mySession)formatter.Deserialize(stream);
}
finally
{
if (stream != null)
stream.Close();
}
return Session;
}
在请求的末尾,Page类的Unload事件被启动了,一个同Unload事件一起注册的事件处理方法将串行化对话数据为二进制格式并将结果二进制数据存入SQL Server。
private void PersistSession(Object obj, System.EventArgs arg)
{ sessionPersistence.SaveSession(
Server.UrlDecode(cookie.Value).ToLower().Trim(), dsn, Session, IsNewSession);
}
public void SaveSession(string key, string dsn,
mySession Session, bool IsNewSession)
{
SqlConnection conn = new SqlConnection(dsn);
SqlCommand SaveCmd = new SqlCommand();
SaveCmd.Connection = conn; try
{
if (IsNewSession)
SaveCmd.CommandText = InsertStatement;
else
SaveCmd.CommandText = UpdateStatement; SaveCmd.Parameters.Add("@ID", new Guid(key));
SaveCmd.Parameters.Add("@Data", Serialize(Session));
SaveCmd.Parameters.Add("@LastAccessed", DateTime.Now.ToString()); conn.Open();
SaveCmd.ExecuteNonQuery();
}
finally
{
if (conn != null)
conn.Close();
}
}
private Byte[] Serialize(mySession Session)
{
if (Session == null) return null; Stream stream = null;
Byte[] state = null; try
{
IFormatter formatter = new BinaryFormatter();
stream = new MemoryStream();
formatter.Serialize(stream, Session);
state = new Byte[stream.Length];
stream.Position = 0;
stream.Read(state, 0, (int)stream.Length);
stream.Close();
}
finally
{
if (stream != null)
stream.Close();
}
return state;
} SessionPage类以及与它相关的类被封装在SessionUtility组件中。在一个新ASP.NET项目中,需要作SessionUtility组件的引用,为了与传统的ASP代码共享对话,每个页面由SessionPage代替Page类衍生出来。一旦移植完成了,新应用程序能通过说明SessionPage类中定义的对话变量切换回使用原来的HttpSession对象来显示基本的HttpSession。
我对你的代码有兴趣,能否给些有关这方面的知识给我看看,说真的,你的技术太高了,我看不明白你的代码啊
不乱了套了?这隐私团体第一个就不放过你啊参考单一登陆(Single Sign-on)问题
http://blog.joycode.com/saucer/archive/2004/02/25/13789.aspx
了! 就是devx.com 这些地址都进不了,有没有其它详细资料呢?救命!HELP!!!
http://www.devx.com/security/Article/17483/0/page/1 进不了!