【问题标题】:Dynamic Web Form Based on Rights and Permissions基于权限的动态Web表单
【发布时间】:2012-07-16 10:25:04
【问题描述】:

需要设计几个基于用户类型和权限级别而变化的 ASP.Net Web 表单。

数据库中定义了七种用户类型(ClientType 表,ID = 0-7)。

数据库中将映射回我们的 Web 表单中的控件的所有字段也由具有查看/添加/修改/删除权限的用户类型定义,并存储在数据库中的单独表中。

tbl_FieldAccess

FieldName = Client_Name (Client Name Field in our Client Table)
ClientType = 1
View = 1
Add = 0
Modify = 0
Delete = 0

FieldName = Client_Name ClientType = 7
View = 1
Add = 1
Modify = 1
Delete = 1

现在采用我的实际 Web 表单控件并将它们映射到我的 tbl_FieldAccess 表中的记录,然后使用它来确定是否显示/隐藏控件的最佳方式是什么(模式、实践、具体示例),使其成为只读等?

注意:我必须使用旧版登录和身份验证,因此此处不能选择 ASP.Net Membership API。

使用 ASP.Net、C# 和 SQL Server。

谢谢!

【问题讨论】:

    标签: asp.net .net sql-server permissions webforms


    【解决方案1】:

    我建议你为你的页面创建一个视图模型:

    class MyPageViewModel
    {
        public bool SendButtonVisible { get; set; }
        public bool EditButtonEnabled { get; set; }
        // many other properties ...
        public YourData Data { get; set; }
    }
    

    那么你的 aspx 看起来像:

    <asp:Button Id="btnSend" runat="server" Visible='<%# Model.SendButtonVisible" %>' />
    

    还有你的代码:

        public class YourPage : Page
        {
             public MyPageViewModel Model 
             {
                 get { return (MyPageViewModel )ViewState["Model"]; }
                 set { ViewState["Model"] = value;  }
             }
    
             protected void Page_Load(object sender, EventArgs e)
             {
                if (!Page.IsPostBack)
                {
                    // put all business logic in your service layer
                    Model = YourServiceClass.GetMyPageViewModel();
                    DataBind();
                }
             }
        }
    

    【讨论】:

    • 我喜欢。我会试一试,看看效果如何,然后回复你。谢谢。
    • 看起来不错,但是我怎么知道当前加载了哪个页面并获得了特定的表单权限。我们目前正在数据库中加载表单名称并获得特定的表单权限。请告诉我最好的比较当前选择的表单的方法等于数据库中存储的表单
    • @VGSNaidu 您应该启用/禁用控件以反映用户的权限。例如,如果您有一个具有 AdminRole 的用户并且该角色包含发送消息的权限,那么您将 SendMessagePage 上的 SendMessageButton 设置为可见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 2018-05-31
    相关资源
    最近更新 更多