在安全模型进行ASP.Net网站(.NET 3.5)我们存储的页面名称:可编程访问(全部)ASP.Net网页在一个网站?
page.GetType()名称
在数据库表的主键,以便能够查找用户是否可以访问某个页面。第一次访问页面时,该记录将自动在数据库中创建。
我们已经导出这些数据库语句来插入脚本,但是每次创建新页面时,我们都必须更新脚本,这不是一个大问题,但我希望找到一种自动的方式来执行此操作。
我创建了一个属性,我标记了几页,然后编写了一个小的过程来获取所有具有此属性的对象,通过反射创建实例并使用相同的代码插入记录以提供页面记录以上:
IEnumerable<Type> viewsecurityPages = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsDefined(typeof(ViewSecurityAttribute),false));
foreach (Type t in viewsecurityPages)
{
object obj = Activator.CreateInstance(t, false);
//clip..(This code just checks if the record already exists in the DB)
if (feature == null)
{
Attribute attb = Attribute.GetCustomAttribute(t, typeof(ViewSecurityAttribute));
if (attb != null)
{
CreateSecurableFeatureForPage((Page)obj, uow, attb.ToString());
}
}
}
的问题是,当页面经过实际的页面周期过程page.GetType()名称是这样的:
search_accounts_aspx
但是当我使用的行为它上面ivator方法返回:
账户
所以记录不匹配的安全表。无论如何,通过编程的方式“访问”一个网页,以便通过实际的页面生命周期,我会从Name参数中取回正确的值。
任何帮助/参考将不胜感激。
我忘了提及我试过蜘蛛。该网站是一个真正的商业应用程序(出售运行内部网),所以很多“链接”实际上通过提交按钮等发生我可以在一个网站地图上工作,我猜... 我没有想到将属性更改为URI并使用HTTP请求访问这些URI。这可行,但在网站更改时仍需要一些手动操作,有趣的想法,我必须考虑。 – mlowrance 2009-09-23 12:46:50