【发布时间】:2015-06-13 11:35:27
【问题描述】:
我想使用 c# wpf 为不同的用户显示不同的菜单。
另外,我已经有多个登录只使用 oracle 数据库。
我想通过 C# 控制用户权限。
【问题讨论】:
-
我的回答有用吗?请发表您的反馈意见。
标签: c# wpf privileges
我想使用 c# wpf 为不同的用户显示不同的菜单。
另外,我已经有多个登录只使用 oracle 数据库。
我想通过 C# 控制用户权限。
【问题讨论】:
标签: c# wpf privileges
Aravindhan – 首先,您需要有适当的身份验证和授权流程。那么,如何进行身份验证:
http://blog.magnusmontin.net/2013/03/24/custom-authorization-in-wpf/
基本上,您需要实现 .Net 提供给您的上述链接中描述的接口。当您使用 IAuthenticationService ->AuthenticateUser 方法时,您必须为此提供 Oracle 实现。
实现将类似于下面的sn-p:
public User AuthenticateUser(string username, string clearTextPassword){
var List<InternalUserData> _users = GetUsersList();
InternalUserData userData = _users.FirstOrDefault(u => u.Username.Equals(username)
&& u.HashedPassword.Equals(CalculateHash(clearTextPassword, u.Username)));
if (userData == null)
throw new UnauthorizedAccessException("Access denied. Please provide some valid credentials.");
return new User(userData.Username, userData.Email, userData.Roles);
}
Public List<InternalUserData> GetUsersList(){
string sql = "SELECT Username, Email, Password, Userole FROM USER";
command.CommandText = sql;
var List< InternalUserData> listUsers = new List< InternalUserData>();
OracleDataReader reader = command.ExecuteReader();
while (reader.Read())
{
listUsers.Add( new InternalUserData((string)reader["Username"], (string)reader["Email"], (string)reader["Password"],new string[] { (string)reader["Userole "]})
}
return listUsers;
}
【讨论】: