日期:2014-05-18  浏览次数:20367 次

asp.net 权限管理
需要做一个asp.net应用程序,其中采用基于角色的权限管理,但角色的名称、种类都需要在运行中可以进行配置,想通过角色来控件哪些用户可以访问文件夹中的页面。
如果使用配置文件来控制每个文件夹中可以访问用户的角色,那如何实现系统数据库中角色名称或种类变化后,对应配置中的角色名进行自动更新?
如果不使用配置文件来控制每个文件夹中可以访问的用户的角色,那是否可以通过每个页面自己在加载时判断用户打开页面的权限?这么做的话,系统的性能应该会受很大影响吧?
如果有其他方法,也请各位多指点。谢谢

------解决方案--------------------
有的时候过度灵活就是脱离实际,就是找麻烦。你最后边的问题其实才应该是首先要实现的。页面中,例如一个“控制几个大门的开启关闭”的页面,其中代码可能写有
C# code
if(gate=="A号门" && action="开启")
{
    if(!User.InRole("可以打开A号门"))
        throw new Exception("没有权限!");
    else
        .......
}

------解决方案--------------------
关于asp.net中基本的“菜单权限”,你可以搜索:

http://www.google.com.hk/search?hl=zh-CN&lr=lang_zh-CN%7Clang_zh-TW&newwindow=1&safe=strict&biw=1364&bih=707&tbs=lr%3Alang_1zh-CN%7Clang_1zh-TW&q=asp.net+sitemap+role&oq=asp.net+sitemap+role&aq=f&aqi=&aql=&gs_sm=3&gs_upl=5926l9202l0l9796l13l10l0l0l0l0l0l0ll0l0&gs_l=serp.3...5926l9202l0l9796l13l10l0l0l0l0l0l0ll0l0

这类别人封装好的东西,你就尽量不要浪费写代码的时间。使用它们就是为了灵活配置、甚至随时可以废弃,所以尽量不要写代码来使用它们,用鼠标拖动一下、设置设置属性就可以了。
------解决方案--------------------
没什么两全齐美的方法吧,不仅是你的问题,程序都是如此吧,无非是牺牲性能换取灵活性,亦或是牺牲灵活性换取性能。就像面向对象和分层架构不也是以牺牲效率为前提的吗?所以别纠结了,世界上没完美的软件
------解决方案--------------------
我一般都是在数据库里面设置段来判断自己需要的权限。
------解决方案--------------------
这个你去看一下AOP用过滤器应该可以实现。
------解决方案--------------------
一般就在数据库用户表里加个权限字段