1 設計思路數據庫
1) 具備建立用戶、修改用戶和刪除用戶的功能: Administrator安全
2) 具備建立角色和刪除角色的功能: Administrator數據庫設計
Static_User字段名tcp |
詳細解釋ide |
類型ui |
備註this |
UserIDspa |
路線編號.net |
varchar(20)線程 |
PK |
UserName |
用戶名稱 |
varchar(20) |
|
UserPwd |
用戶密碼 |
varchar(20) |
|
LastSignTime |
最後登錄時間 |
datatime |
|
SignState |
用戶登錄狀態標記 |
int |
|
TickeID |
驗證票記錄編號 |
varchar(128) |
|
|
|
|
|
Static_User字段名 |
詳細解釋 |
類型 |
備註 |
RoleID |
角色編號 |
varchar(20) |
PK |
RoleName |
角色名稱 |
varchar(20) |
|
RoleNote |
角色信息描述 |
varchar(20) |
|
|
|
|
|
Static_User字段名 |
詳細解釋 |
類型 |
備註 |
UserRoleID |
用戶角色編號 |
varchar(20) |
PK |
UserID |
用戶編號 |
varchar(20) |
FK |
RoleID |
角色編號 |
varchar(20) |
FK |
UserRoleNote |
用戶角色信息描述 |
varchar(20) |
|
|
|
|
|
Static_User字段名 |
詳細解釋 |
類型 |
備註 |
PermissionID |
編號 |
varchar(20) |
PK |
PermissionName |
權限名稱 |
varchar(20) |
|
PermissionNote |
全息信息描述 |
varchar(20) |
|
|
|
|
|
Static_User字段名 |
詳細解釋 |
類型 |
備註 |
RolePermissionID |
角色權限編號 |
varchar(20) |
PK |
RoleID |
角色編號 |
varchar(20) |
FK |
PermissionID |
權限編號 |
varchar(20) |
FK |
RolePermissionNote |
角色權限信息描述 |
varchar(20) |
|
|
|
|
|
using System.Web.Services;
using System.Web.Services.Protocols;
// AuthHeader class extends from SoapHeader
public class AuthHeader : SoapHeader {
public string Username;
public string Password;
}
public class HeaderService : WebService {
public AuthHeader sHeader;
...
[WebMethod(Description="This method requires a custom soap header set by the caller")]
[SoapHeader("sHeader")]
public string SecureMethod() {
if (sHeader == null)
return "ERROR: Please supply credentials";
else
return "USER: " + sHeader.Username;
}
HeaderService h = new HeaderService();
AuthHeader myHeader = new AuthHeader();
myHeader.Username = "username";
myHeader.Password = "password";
h.AuthHeader = myHeader;
String result = h.SecureMethod();
public class ClientClass {
public static void Main() {
GenericIdentity ident = new GenericIdentity("Bob");
GenericPrincipal prpal = new GenericPrincipal(ident,
Newstring[] {"Level1"});
LogicalCallContextData data =
new LogicalCallContextData(prpal);
//Enter data into the CallContext
CallContext.SetData("test data", data);
Console.WriteLine(data.numOfAccesses);
ChannelServices.RegisterChannel(new TcpChannel());
RemotingConfiguration.RegisterActivatedClientType(
typeof(HelloServiceClass), "tcp://localhost:8082");
HelloServiceClass service = new HelloServiceClass();
if(service == null) {
Console.WriteLine("Could not locate server.");
return;
}
// call remote method
Console.WriteLine();
Console.WriteLine("Calling remote object");
Console.WriteLine(service.HelloMethod("Caveman"));
Console.WriteLine(service.HelloMethod("Spaceman"));
Console.WriteLine(service.HelloMethod("Bob"));
Console.WriteLine("Finished remote object call");
Console.WriteLine();
//Extract the returned data from the call context
LogicalCallContextData returnedData =
(LogicalCallContextData)CallContext.GetData("test data");
Console.WriteLine(data.numOfAccesses);
Console.WriteLine(returnedData.numOfAccesses);
}
}
using System;
using System.Text;
using System.Runtime.Remoting.Messaging;
using System.Security.Principal;
public class HelloServiceClass : MarshalByRefObject {
static int n_instances;
int instanceNum;
public HelloServiceClass() {
n_instances++;
instanceNum = n_instances;
Console.WriteLine(this.GetType().Name + " has been created.
Instance # = {0}", instanceNum);
}
~HelloServiceClass() {
Console.WriteLine("Destroyed instance {0} of
HelloServiceClass.", instanceNum);
}
public String HelloMethod(String name) {
//Extract the call context data
LogicalCallContextData data =
(LogicalCallContextData)CallContext.GetData("test data");
IPrincipal myPrincipal = data.Principal;
//Check the user identity
if(myPrincipal.Identity.Name == "Bob") {
Console.WriteLine("\nHello {0}, you are identified!",
myPrincipal.Identity.Name);
Console.WriteLine(data.numOfAccesses);
}
else {
Console.WriteLine("Go away! You are not identified!");
return String.Empty;
}
// calculate and return result to client
return "Hi there " + name + ".";
}
}
1)class UserInfoMng() 用戶信息管理類,其中包括方法:
l CreateUserInfo(string UserName string UserPwd) 創建用戶信息,調用存儲過程CreateUserInfo(@UserName,@UserPwd)
l ModifyUserInfo(string UserName string UserPwd) 修改用戶信息,調用存儲過程ModifyUserInfo(@UserName,@UserPwd)
l DeleteUserInfo() 刪除用戶信息,調用存儲過程DeleteUserInfo
(@UserID)
2)class UserAuthentication() 用戶認證類,用來實現用戶角色、權限的設置,包括方法:
l CreatePermissionInfo(string PermissionName string Permissi-
-onNote) 創建權限信息,調用存儲過程CreatePermissionInfo
(@PermissionName,@PermissionNote)
l CreateRoleInfo(string RoleName string RoleNote) 創建角色信息,調用存儲過程CreateRoleInfo(@RoleName,@RoleNote)
l DeleteRoleInfo() 刪除角色信息,調用存儲過程DeleteRoleInfo
(@RoleID)
l GrantUserRole(string UserID string RoleID string UserRoleNote) 授予用戶角色,調用存儲過程GrantUserRole(@UserID,@RoleID,
@UserRoleNote)
l DeleteUserRole() 刪除用戶角色,調用存儲過程DeleteUserRole
(@UserRoleID)
l GrantRolePermission(string RoleID string PermissionID string RolePermissionNote) 授予角色權限,調用存儲過程GrantRolePermission(@RoleID,@PermissionID,@RolePermissionNote)
l DeleteRolePermission() 刪除授予的角色權限,調用存儲過程
DeleteRolePermission(@RolePermissionID)
1)權限設置
class PermissionInfoMng() 用戶權限信息管理類,包括方法:
l CreatePermissionInfo() 創建權限信息
2)用戶管理
class UserInfoMng() 用戶信息管理類,包括方法:
l CreateUserInfo() 創建用戶信息
l ModifyUserInfo() 修改用戶信息
l DeleteUserInfo() 刪除用戶信息
3)用戶受權管理
class RoleInfoMng() 角色信息管理類,包括方法:
l CreateRoleInfo() 創建角色信息
l DeleteRoleInfo() 刪除角色信息
class UserRoleMng() 用戶角色管理類,包括方法:
l GrantUserRole() 授予用戶角色
l DeleteUserRole() 刪除用戶角色
class RolePermissionMng() 角色權限管理類,包括方法
l GrantRolePermission() 授予角色權限
l DeleteRolePermission() 刪除角色權限
4)用戶認證管理
class Authentication() 用戶認證類,包括方法:
l Login(string UserName string UserPwd) 用戶登錄認證,用戶認證經過分配給用戶一個TicketID,不然TicketID則爲null
l Logout() 用戶正常退出