首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于权限的安全模型

基于权限的安全模型
EN

Stack Overflow用户
提问于 2014-06-08 05:52:06
回答 1查看 192关注 0票数 1

在使用MVP模式(对于小型客户端)的windows窗体薪资应用程序中,我计划按以下方式(基于权限)处理用户权限,因为它的实现应该不那么复杂和直接。

注意到:系统可以同时被少数用户使用(最多3),数据库在服务器端。

这是我的UserModel。每个用户都有给他们的权限列表。

代码语言:javascript
复制
class User
{
    string UserID { get; set; }
    string Name { get; set; }
    string NIC {get;set;}
    string Designation { get; set; }
    string PassWord { get; set; }
    List <string> PermissionList = new List<string>();
    bool status { get; set; }
    DateTime EnteredDate { get; set; }
}

当用户登录到系统时,它将使当前用户保持在内存中。

例如,在BankAccountDetailEntering视图中,我可以控制访问命令按钮的权限,如下所示。

代码语言:javascript
复制
 public partial class BankAccountDetailEntering : Form
    {
        bool AccountEditable {get; set;}

        public BankAccountDetailEntering ()
        {
            InitializeComponent();
        }

        private void BankAccountDetailEntering_Load(object sender, EventArgs e)
        {
            cmdEditAccount.enabled = false;

            OnLoadForm (sender, e); // Event fires...

            If (AccountEditable )
            {
                cmdEditAccount.enabled=true;
            }
         }
    }

为此,我的所有相关演讲者(如BankAccountDetailPresenter)都应该知道UserModel,以及它向View展示的相应的业务Model

代码语言:javascript
复制
class BankAccountDetailPresenter
{    
    BankAccountDetailEntering _View;
    BankAccount _Model;
    User _UserModel;
    DataService _DataService;

    BankAccountDetailPresenter( BankAccountDetailEntering view, BankAccount model, User userModel, DataService dataService )
    {
        _View=view;
        _Model = model;
        _UserModel = userModel;
        _DataService = dataService;
        WireUpEvents();
    }

    private void WireUpEvents()
    {
        _View.OnLoadForm += new EventHandler(_View_OnLoadForm);
    }

    private void _View_OnLoadForm(Object sender, EventArgs e)
    {

        foreach(string s in _UserModel.PermissionList) 
        { 
            If( s =="CanEditAccount")
            {
                _View.AccountEditable =true;
                return;
            }
        }
    }

    public Show()
    {
        _View.ShowDialog();
    }
}

因此,我正在处理演示者中遍历列表的用户权限。这应该在PresenterView中执行吗?还有其他更有希望的方法吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-11 00:00:59

“演示者对模型和视图进行操作。它从存储库(模型)检索数据,并将其格式化以在视图中显示。”- MVP

因此,演示者格式化数据,但对我来说,它似乎包含某种业务逻辑-它真的检查用户是否可以修改帐户。如果你把这张支票忘在其中一张表格里怎么办?因此,它应该位于底层(可能是服务)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24103400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档