基于某些角色和设置自定义页面控件的最佳解决方案



我在asp.net中有几个页面,每个页面都有很多控件。我的应用程序中还有一些角色,每个角色都有一些设置选项。现在我想根据这些设置准备我的页面。也许它不太清楚,所以请看看我的例子。

示例:页面中有一些按钮、一些文本框、一些日期时间选择器和图表,现在我想要的是,当用户看到此页面时,控件会根据用户角色显示和消失。重要的是,我不希望只有可见和不可见的控件,在某些情况下,我需要显示带有一些自定义的控件。例如更改图表数据源、限制选择日期时间等

我能想到的第一个解决方案是将设置保存在数据库中,在用户访问页面后,设置从数据库中提取,基于这些设置,我可以使用条件短语(if和else)自定义控件。但我认为这不是一个好方法,我的页面会变得非常混乱。

请帮助我提供任何更好的解决方案,如果你知道关于它的好参考,请告诉我。

请查看此链接。。。使用ControlAdapters可以帮助您。。。

asp.net 中基于角色的控件启用/禁用

您必须使用Thread.CurrentPrincipal.

A。当用户登录到您的应用程序时,您将他的身份附加到线程,例如

string[] rolesArray = .....; //Get roles from dataBase by identity.
Thread.CurrentPrincipal = new YourCustomPrincipal(new YourCustomIdentity("YouName", "..."), rolesArray);

B。当你浏览你的应用程序时,你会测试Thread.CurrentPrincipal

IPrincipal threadPrincipal = Thread.CurrentPrincipal;
if(threadPrincipal.Roles.Contains("roleTest"))
{
  //Adjust your control
}

最新更新