Authentication.cs
上传用户:szgaoree
上传日期:2009-01-05
资源大小:74k
文件大小:4k
源码类别:

Ajax

开发平台:

C#

  1. /*
  2. using System;
  3. using AjaxPro.Cryptography;
  4. namespace AjaxPro.Security
  5. {
  6. /// <summary>
  7. /// Represents error if ticket is too old.
  8. /// </summary>
  9. public class TicketExpiredException : Exception
  10. {
  11. private DateTime m_ExpireDate = DateTime.MinValue;
  12. public TicketExpiredException(DateTime expireDate)
  13. {
  14. m_ExpireDate = expireDate;
  15. }
  16. /// <summary>
  17. /// Returns the date the ticket was expired.
  18. /// </summary>
  19. public DateTime ExpireDate
  20. {
  21. get
  22. {
  23. return m_ExpireDate;
  24. }
  25. }
  26. public override string Message
  27. {
  28. get
  29. {
  30. return "Ticket has been expired!";
  31. }
  32. }
  33. }
  34. /// <summary>
  35. /// Represents a simple AuthenticationTicket class.
  36. /// </summary>
  37. public class Authentication : IAjaxAuthentication
  38. {
  39. private int m_UserID;
  40. private int m_DataSetID;
  41. private string m_DataSet;
  42. private DateTime m_TicketStartTime;
  43. private TimeSpan ExpireTimespan = new TimeSpan(24, 0, 0);
  44. /// <summary>
  45. /// 
  46. /// </summary>
  47. public Authentication()
  48. {
  49. }
  50. /// <summary>
  51. /// 
  52. /// </summary>
  53. /// <param name="UserID">The UserID stored in dbo.Accounts.</param>
  54. /// <param name="DataSet">The full dataset as a string.</param>
  55. /// <param name="DataSetID">The DataSetID stored in dbo.DataSets.</param>
  56. public Authentication(int UserID, int DataSetID, string DataSet)
  57. {
  58. m_UserID = UserID;
  59. m_DataSetID = DataSetID;
  60. m_DataSet = DataSet;
  61. }
  62. /// <summary>
  63. /// 
  64. /// </summary>
  65. /// <param name="AuthenticationTicket">The encrypted ticket.</param>
  66. public Authentication(string AuthenticationTicket)
  67. {
  68. ParseTicket(AuthenticationTicket);
  69. }
  70. /// <summary>
  71. /// 
  72. /// </summary>
  73. /// <param name="AuthenticationTicket">The encrypted ticket.</param>
  74. internal void ParseTicket(string AuthenticationTicket)
  75. {
  76. WebDecrypter webDec = new WebDecrypter();
  77. string plainTicket = webDec.Decrypt(AuthenticationTicket, "password");
  78. if(plainTicket.IndexOf("|") < 0)
  79. throw new Exception("Is not a valid AuthenticationTicket (1)!");
  80. string[] TicketItems = plainTicket.Split(new Char[]{'|'});
  81. if(TicketItems.Length != 4)
  82. throw new Exception("Is not a valid AuthenticationTicket (2)!");
  83. m_UserID = Convert.ToInt16(TicketItems[0]);
  84. m_DataSetID = Convert.ToInt16(TicketItems[1]);
  85. m_TicketStartTime = new DateTime(Convert.ToInt64(TicketItems[2]));
  86. m_DataSet = TicketItems[3];
  87. if(System.DateTime.Now - m_TicketStartTime > ExpireTimespan)
  88. throw new TicketExpiredException(m_TicketStartTime + ExpireTimespan);
  89. }
  90. /// <summary>
  91. /// Gets the AuthenticationTicket for accessing PC-Topp.NET Webservices.
  92. /// </summary>
  93. public string AuthenticationTicket
  94. {
  95. get
  96. {
  97. m_TicketStartTime = System.DateTime.Now;
  98. string plainTicket = m_UserID.ToString() + "|" + m_DataSetID.ToString() + "|" + m_TicketStartTime.Ticks + "|" + m_DataSet;
  99. WebEncrypter webEnc = new WebEncrypter();
  100. return webEnc.Encrypt(plainTicket, "password");
  101. }
  102. }
  103. /// <summary>
  104. /// Refresh an AuthenticationTicket.
  105. /// </summary>
  106. /// <param name="AuthenticationTicket">The encrypted ticket.</param>
  107. /// <returns>The refreshed encrypted ticket.</returns>
  108. public string RefreshTicket(string AuthenticationTicket)
  109. {
  110. ParseTicket(AuthenticationTicket);
  111. return this.AuthenticationTicket;
  112. }
  113. /// <summary>
  114. /// Gets the UserID.
  115. /// </summary>
  116. public int UserID
  117. {
  118. get
  119. {
  120. return m_UserID;
  121. }
  122. set
  123. {
  124. m_UserID = value;
  125. }
  126. }
  127. /// <summary>
  128. /// Gets the DataSetID for the specified DataSet.
  129. /// </summary>
  130. public int DataSetID
  131. {
  132. get
  133. {
  134. return m_DataSetID;
  135. }
  136. set
  137. {
  138. m_DataSetID = value;
  139. }
  140. }
  141. /// <summary>
  142. /// Gets the DataSet for the specified DataSet.
  143. /// </summary>
  144. public string DataSet
  145. {
  146. get
  147. {
  148. return m_DataSet;
  149. }
  150. set
  151. {
  152. m_DataSet = value;
  153. }
  154. }
  155. /// <summary>
  156. /// Gets the remaining time for this ticket after the ticket will be invalid.
  157. /// </summary>
  158. public TimeSpan RemainingTime
  159. {
  160. get
  161. {
  162. return ExpireTimespan - (System.DateTime.Now - m_TicketStartTime);
  163. }
  164. }
  165. }
  166. }
  167. */