与许多真实世界的应用程序一样,安全性(登录/密码)就是授予/拒绝访问整个应用程序的权限。现在客户端要求细粒度的安全性,比如一些网页应该只能查看,有些用户可以删除其他不能等。 基本上客户端正在请求以下内容。
有效权限::用户 - >网页 - >访问类型(查看,创建/编辑,删除)
申请详情
我们讨论过,最好是增强 security.sdf 文件并拥有一个用于屏幕(网页)的表格和一个用户+屏幕的连接表+一个表示访问类型的数字,即< / p>
可以使用按位运算符检查这些。该应用程序使用ASP.NET模拟来访问MSSQL2008
问题是如何在Web应用程序中实现它?
如果有人有更好的想法请分享!!!
答案 0 :(得分:3)
您可以使用IsInRole
功能并将用户分类为角色。每个角色都可以执行一些只能执行的操作。因此,通过询问女巫角色是用户,你可以让他做或不做。
HttpContext.Current.User.IsInRole("Role")
或者您可以反向执行,询问此操作是否适用于此角色,这是一个简单的对象,具有权限和检查。
public enum csPermissions
{
pActionDelete = 1,
pActionEdit = 2 ,
// more names...
}
private int[] AdminPermission = {
(int)csPermissions.pActionEdit,
(int)csPermissions.pActionDelete,
// more permissions...
};
private int[] BackOfficePermission = {
(int)csPermissions.pActionEdit,
// more permissions...
};
public static bool IsThisAllowed(csPermissions AskPermitForThisAction)
{
// questions here for all users roles...
// here is only an example
if (HttpContext.Current.User.IsInRole("Administator")))
{
for (int i = 0; i < AdminPermission.Length; i++)
if (AdminPermission[i] == (int)AskPermitForThisAction)
return true;
}
// no permission found
return false;
}