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 + -
显示快捷键?