我正在开发一个具有一些权限限制的WPF应用程序,因此只有管理员可以看到的屏幕和仅允许某些功能的屏幕。
目前,我正在检查每个屏幕的构造方法上的权限访问级别,其中User对象流通过应用程序。但我不能认为必须有一种更聪明,更恰当的方法来做到这一点。
是否可以使用某种PermissionHandler类来进行验证,并设置用户可以做什么和不能做什么,因为他的权限级别?
感谢advence。
答案 0 :(得分:2)
我认为您想要做的是将安全性内容放在业务逻辑层而不是UI中。
我不确定您的项目架构/设计模式,但此QA是将安全逻辑移动到Controller或ViewModel的良好开端:https://softwareengineering.stackexchange.com/q/197977/38951
答案 1 :(得分:1)
当然有可能。您可以使用Singleton模式或静态类。类似的东西(伪代码):
struct sess_state
甚至可以绑定到public static class PermissionHandler
{
public static User {get;set;}
public static Login(string username, string password)
{
//set User here
}
}
或在User.Claims
上设置方法以获得权限。无论如何,如果您只是使用它来显示/隐藏您的控件,您的应用程序可以通过使用例如Snoop轻松攻击。所以如果你真的需要"保护"使用某些功能时,您应该检查业务逻辑或服务器端(如果有的话)。
如果你去服务器端,我强烈建议你使用令牌服务。例如https://jwt.io/或ADFS。当然还有很多其他的,但这种QA格式需要很长时间......