日期:2014-02-06  浏览次数:20407 次

基于.net的principal、identity接口的用户处理机制。
SiteIdentity.cs
using System;
using System.Text;
using System.Collections;
using System.Security.Cryptography;
namespace ContextUser
{
 /// <summary>
 /// SiteIdentity 的摘要说明。
 /// </summary>
 public class SiteIdentity: System.Security.Principal.IIdentity
 {
  private string userName;
  private string emailAddress;
  private int userID; 

  public SiteIdentity(string currentUserName )
  {
   userName = currentUserName;
   emailAddress = "test@msn.com";
   userID =1;
  }
  public string AuthenticationType
  {
   get
   {
    return "Custom Authentication";
   }
   set 
   {
    // do nothing
   }
  }
  public bool IsAuthenticated
  {
   get 
   {
    // assumption: all instances of a SiteIdentity have already
    // been authenticated.
    return true;
   }
  }
  public string Name
  {
   get 
   {
    return userName;
   }
  }
  public string EmailAddress
  {
   get 
   {
    return emailAddress;
   }
  }
  public int UserID
  {
   get 
   {
    return userID;
   }
  }
 }
}
-----------------------------------------------------------------------------------------------
SitePrincipal.cs
using System;
using System.Collections;
using System.Security;
using System.Security.Cryptography;
namespace ContextUser
{
 /// <summary>
 /// SitePrincipal 的摘要说明。
 /// </summary>
 public class SitePrincipal:  System.Security.Principal.IPrincipal
 {
  protected System.Security.Principal.IIdentity identity;
  protected ArrayList permissionList;//许可动态数组
  protected ArrayList roleList;//角色动态数组
  public System.Security.Principal.IIdentity Identity
  {
   get 
   {
    return identity;
   }
   set 
   {
    identity = value;
   }
  }
  public SitePrincipal( string username )//构造函数逻辑
  {  
   
   identity = new SiteIdentity( username );
   roleList = new ArrayList();//添加角色数组 以后可以用从数据库获取数值代替
   roleList.Add("Admin");
   roleList.Add("123");
   permissionList = new&n