// Gonzalo Paniagua Javier (gonzalo@ximian.com)
//
// (C) 2002 Ximian, Inc (http://www.ximian.com)
+// Copyright (c) 2005 Novell, Inc (http://www.novell.com)
//
-using System;
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.IO;
+using System.Security.Permissions;
namespace System.Web.Security
{
+ // CAS - no InheritanceDemand here as the class is sealed
+ [AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
+ // attributes
[Serializable]
public sealed class FormsAuthenticationTicket
{
int version;
- string name;
- DateTime issueDate;
+ bool persistent;
+ DateTime issue_date;
DateTime expiration;
- bool isPersistent;
- string userData;
- string cookiePath;
+ string name;
+ string cookie_path;
+ string user_data;
+
+ /*
+ internal void ToStr ()
+ {
+ Console.WriteLine ("version: {0}", version);
+ Console.WriteLine ("persistent: {0}", persistent);
+ Console.WriteLine ("issue_date: {0}", issue_date);
+ Console.WriteLine ("expiration: {0}", expiration);
+ Console.WriteLine ("name: {0}", name);
+ Console.WriteLine ("cookie_path: {0}", cookie_path);
+ Console.WriteLine ("user_data: {0}", user_data);
+ }
+ */
+
+ internal byte [] ToByteArray ()
+ {
+ MemoryStream ms = new MemoryStream ();
+ BinaryWriter writer = new BinaryWriter (ms);
+ writer.Write (version);
+ writer.Write (persistent);
+ writer.Write (issue_date.Ticks);
+ writer.Write (expiration.Ticks);
+ writer.Write (name != null);
+ if (name != null)
+ writer.Write (name);
+
+ writer.Write (cookie_path != null);
+ if (cookie_path != null)
+ writer.Write (cookie_path);
+
+ writer.Write (user_data != null);
+ if (user_data != null)
+ writer.Write (user_data);
+
+ writer.Flush ();
+ return ms.ToArray ();
+ }
+
+ internal static FormsAuthenticationTicket FromByteArray (byte [] bytes)
+ {
+ if (bytes == null)
+ throw new ArgumentNullException ("bytes");
+
+ MemoryStream ms = new MemoryStream (bytes);
+ BinaryReader reader = new BinaryReader (ms);
+ FormsAuthenticationTicket ticket = new FormsAuthenticationTicket ();
+ ticket.version = reader.ReadInt32 ();
+ ticket.persistent = reader.ReadBoolean ();
+ ticket.issue_date = new DateTime (reader.ReadInt64 ());
+ ticket.expiration = new DateTime (reader.ReadInt64 ());
+ if (reader.ReadBoolean ())
+ ticket.name = reader.ReadString ();
+
+ if (reader.ReadBoolean ())
+ ticket.cookie_path = reader.ReadString ();
+
+ if (reader.ReadBoolean ())
+ ticket.user_data = reader.ReadString ();
+
+ return ticket;
+ }
+
+ FormsAuthenticationTicket ()
+ {
+ }
public FormsAuthenticationTicket (int version,
string name,
{
this.version = version;
this.name = name;
- this.issueDate = issueDate;
+ this.issue_date = issueDate;
this.expiration = expiration;
- this.isPersistent = isPersistent;
- this.userData = userData;
- //FIXME: cookiePath???
+ this.persistent = isPersistent;
+ this.user_data = userData;
+ this.cookie_path = "/";
}
public FormsAuthenticationTicket (int version,
{
this.version = version;
this.name = name;
- this.issueDate = issueDate;
+ this.issue_date = issueDate;
this.expiration = expiration;
- this.isPersistent = isPersistent;
- this.userData = userData;
- this.cookiePath = cookiePath;
+ this.persistent = isPersistent;
+ this.user_data = userData;
+ this.cookie_path = cookiePath;
}
public FormsAuthenticationTicket (string name, bool isPersistent, int timeout)
{
this.version = 1;
this.name = name;
- this.issueDate = DateTime.Now;
- this.isPersistent = isPersistent;
- if (isPersistent)
- expiration = issueDate.AddYears (50);
+ this.issue_date = DateTime.Now;
+ this.persistent = isPersistent;
+ if (persistent)
+ expiration = issue_date.AddYears (50);
else
- expiration = issueDate.AddMinutes ((double) timeout);
+ expiration = issue_date.AddMinutes ((double) timeout);
- this.userData = String.Empty;
- //FIXME: cookiePath???
+ this.user_data = "";
+ this.cookie_path = "/";
}
- public string CookiePath
+ internal void SetDates (DateTime issue_date, DateTime expiration)
{
- get {
- return cookiePath;
- }
+ this.issue_date = issue_date;
+ this.expiration = expiration;
}
-
- public DateTime Expiration
+
+ internal FormsAuthenticationTicket Clone ()
{
- get {
- return expiration;
- }
+ return new FormsAuthenticationTicket (version,
+ name,
+ issue_date,
+ expiration,
+ persistent,
+ user_data,
+ cookie_path);
}
- public bool Expired
- {
- get {
- return DateTime.Now > expiration;
- }
+ public string CookiePath {
+ get { return cookie_path; }
}
- public bool IsPersistent
- {
- get {
- return isPersistent;
- }
+ public DateTime Expiration {
+ get { return expiration; }
}
- public DateTime IssueDate
- {
- get {
- return issueDate;
- }
+ public bool Expired {
+ get { return DateTime.Now > expiration; }
}
- public string Name
- {
- get {
- return name;
- }
+ public bool IsPersistent {
+ get { return persistent; }
}
- public string UserData
- {
- get {
- return userData;
- }
+ public DateTime IssueDate {
+ get { return issue_date; }
}
- public int Version
- {
- get {
- return version;
- }
+ public string Name {
+ get { return name; }
+ }
+
+ public string UserData {
+ get { return user_data; }
+ }
+
+ public int Version {
+ get { return version; }
}
}
}