mvcTips:权限设计的小技巧

 在ASP.NET MVC中,如何来实现页面的验证与授权访问呢?

 在ASP.NET MVC架构下,用户访问的每一个页面是通过Controller控制数据与视图的组合来生成HTML代码,进而向客户端输出。基于这种模式,我们可以在每个Controller或者Action上加上验证过滤就可以有效的进行授权访问了。

 代码如下:

代码
 1  public   class  ValidatePower : ActionFilterAttribute
 2      {
 3           public   override   void  OnActionExecuting(ActionExecutingContext filterContext)
 4          {
 5               if  (filterContext.HttpContext.User  !=   null   &&  filterContext.HttpContext.User.Identity.IsAuthenticated)
 6              {                
 7                   string  areaName  =  ( string )filterContext.RouteData.DataTokens[ " area " ];
 8                   string  controllerName  =  ( string )filterContext.RouteData.Values[ " controller " ];
 9                   string  actionName  =  ( string )filterContext.RouteData.Values[ " action " ];
10 
11                   // 获取登录用户的当前操作权限
12                  UserService us  =   new  UserService();
13                   if  ( ! us.IsPermission(filterContext.HttpContext.User.Identity.Name, areaName, controllerName, actionName))
14                      filterContext.Result  =   new  ViewResult { ViewName  =   " NoPermission "  };
15              }
16               else
17              {
18                  filterContext.Result  =   new  ViewResult { ViewName  =   " LogOn "  };
19              }
20          }
21      }

 

 首先判断用户是否有效。否则转向登录页面。

 然后获取当前的area/controller/action。将其与权限列表中的area/controller/action对应。如果不存在,转到没有权限的提示页面。存在,表示有访问权限,继续执行action。

你可能感兴趣的:(tips)