phileprincipal.cs

来自「wrox c#高级编程」· CS 代码 · 共 113 行

CS
113
字号
using System;
using System.Collections;
using System.Security;
using System.Security.Cryptography;
using System.Text;

using Wrox.WebModules.Accounts;


namespace Wrox.WebModules.Accounts.Business
{
	/// <summary>
	/// Summary description for PhilePrincipal.
	/// </summary>
	public class PhilePrincipal: Wrox.WebModules.Business.BizObject, System.Security.Principal.IPrincipal
	{
		protected System.Security.Principal.IIdentity identity;
		protected ArrayList permissionList;
		protected ArrayList roleList;

		// IPrincipal Interface Requirements:
		// property Identity (IIDentity)
		// property IsInRole (boolean)

		public System.Security.Principal.IIdentity Identity
		{
			get 
			{
				return identity;
			}
			set 
			{
				identity = value;
			}
		}

		public bool IsInRole(string role)
		{
			return roleList.Contains( role );
		}

		public bool HasPermission( int permissionID )
		{
			return permissionList.Contains( permissionID );
		}

		public ArrayList Roles
		{
			get 
			{
				return roleList;
			}
		}

		public ArrayList Permissions
		{
			get 
			{
				return permissionList;
			}
		}

		public PhilePrincipal( int userID )
		{
			Configuration.ModuleSettings moduleSettings = Configuration.ModuleConfig.GetSettings();
			Data.User dataUser = new Data.User( moduleSettings.ConnectionString );			
			
			identity = new SiteIdentity( userID );
			permissionList = dataUser.GetEffectivePermissionList( userID );
			roleList = dataUser.GetUserRoles( userID );

		}

		public PhilePrincipal( string emailAddress )
		{
			Configuration.ModuleSettings moduleSettings = Configuration.ModuleConfig.GetSettings();
			Data.User dataUser = new Data.User( moduleSettings.ConnectionString );			
			
			identity = new SiteIdentity( emailAddress );
			permissionList = dataUser.GetEffectivePermissionList( ((Business.SiteIdentity)identity).UserID );
			roleList = dataUser.GetUserRoles( ((Business.SiteIdentity)identity).UserID );

		}

		public static PhilePrincipal ValidateLogin(string emailAddress, string password)
		{
			Configuration.ModuleSettings moduleSettings = Configuration.ModuleConfig.GetSettings();			
			int newID;

			byte[] cryptPassword = EncryptPassword( password );
			
			Data.User dataUser = new Data.User( moduleSettings.ConnectionString );
			if (  (newID = dataUser.ValidateLogin(emailAddress, cryptPassword)) > -1 )
				return new PhilePrincipal( newID );
			else
				return null;			
		}		

		public static byte[] EncryptPassword(string password)
		{
			UnicodeEncoding encoding = new UnicodeEncoding();
			byte[] hashBytes = encoding.GetBytes( password );

			// compute SHA-1 hash.
			SHA1 sha1 = new SHA1CryptoServiceProvider();
			byte[] cryptPassword = sha1.ComputeHash ( hashBytes );

			return cryptPassword;
		}
		
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?