我在DocumentManagement System工作。数据库中定义的用户可以根据定义的访问权限创建/操作自己的文档。文档的所有者可以让其他用户访问/修改文档(存储为XML Contetnt)。我需要自动化LoggedIn用户每当打开文档进行编辑时。该文档已经提供了CreatedBy,EditingUser属性。
如果用户“A”拥有的文档可以由用户“B”编辑,如果他具有该文档的写入权限。现在我需要检查LoggedIn用户对打开以进行编辑的文档的授权(在DocumentManager对象的Save()BL方法内)。在这里,我需要访问BL方法中的LoggedIn用户详细信息,该方法在登录过程之后填充(之后不应更改)。
我的应用程序是WPF应用程序。那么处理这种情况的最佳方法是什么呢?我需要经常检查Loggedin用户在文件中的最右边(特别是在BL方法中)。
答案 0 :(得分:1)
我宁愿建议一种解密机制来授权用户。因此实际应用程序无需担心授权。
您可以将授权逻辑定义为策略 - XACML。
XACML是授权的事实上的标准。
在XACML PDP中定义授权逻辑后 - 在执行用户操作之前,您的应用程序将调用XACML PDP - 并询问登录用户是否有资格对给定资源执行此操作。
使用XACML可以灵活地更改授权逻辑,甚至无需触及应用程序逻辑。
此外 - 您可以使用XACML定义非常精细的规则。
答案 1 :(得分:0)
您需要采用会话方法。您需要维护一个静态类,如下所示。当用户登录时,您需要将它们添加到BLL上的列表
public static class Session{
public static Dictionary<User, DateTime> loggedInUser;
public static Add(User user){
loggedInUser.Add(user, DateTime.Now);
// raise event user arrival
}
public static GetUser(int Id){
// fetch user;
}
public static Remove(User user){
loggedInUser.Removed(user);
// raise event user left
}
// TODO: add timer to check itself. If not activity done in past n minutes,
//log him out
}