首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于角色和数据库的MVC页面级安全性

基于角色和数据库的MVC页面级安全性
EN

Stack Overflow用户
提问于 2013-05-16 21:43:05
回答 1查看 635关注 0票数 1

我使用Authorize(Roles = "Administrator")等来控制对页面的访问,但除此之外,我的客户想要更多。我们有一些用户可以创建SubUsers并确定他们可以访问哪些屏幕。例如,用户1可能表示SubUser 1可能显示屏幕1-4,而不是5-8 (为简单起见,此处使用数字)。SubUser 2可能会得到奇数屏幕,而SubUser可能会得到偶数屏幕。

这看起来不像是基于角色的安全问题。我打算创建一个供用户选择SubUser的屏幕,然后转到另一个屏幕,每个屏幕上都有复选框,并勾选SubUser可以访问的那些。很简单。

我的问题是,如何在应用程序中执行这一点?最明显的方法是,在每次get时,访问数据库,传入用户名和该屏幕的ID,并查看它们是否具有访问权限。有没有更好的方法,避免在每个页面上都使用数据库进行检查?因为没有session对象,所以我无法获得他们可以访问的页面in数组(只有一次)并将其存储在session中。

EN

回答 1

Stack Overflow用户

发布于 2013-05-16 22:39:13

代码语言:javascript
运行
复制
     public class ServiceCheckAttribute : ActionFilterAttribute
        {
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                // check user role
                // Check if user has access to this action/page
                if (userHasAccess)
                {
                    base.OnActionExecuting(filterContext);
                }
                else
                {
                    filterContext.Result = new RedirectToRouteResult(new
                    RouteValueDictionary(new { controller = "Error", action = "AccessDenied" }));
                }
            }
        }

在需要检查用户可访问性的每个控制器上,添加此属性[ServiceCheckAttribute]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16589123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档