zoukankan      html  css  js  c++  java
  • 关于MVC权限控制的一点小想法

      近来一直在学习MVC。

      先检讨一下自己,本来一直在看WPF并向Silverlight靠拢的,可XAML这个东西一时半会领会不了它的真谛,所以暂时先放下了。虽然MVC看的比较系统,但暂时闲置了WPF和Silverlight还是有点沮丧感,觉得自己没有坚持。

      

      MVC的权限控制一直是一个麻烦事。

      Webform下的窗体身份验证及角色权限管理,我自己有一篇文章做了个总结:Asp.Net实现FORM认证的一些使用技巧

      对于MVC,我不喜欢它自带的Membership那一套,也不喜欢用Linq,所以我着重参考了这篇文章:ASP.NET MVC:窗体身份验证及角色权限管理示例。文章的内容很好,将FORM认证和MVC很好的结合起来,而且角色权限可控制到Action的级别。

      今天我在做自己写的一个简单示例程序时发现,如果当我们的权限管理比较粗狂时,比如,我只需要根据是否登录来判断页面是否需要访问时,如果还是为每一个Controller下的每一个Action都增加属性[Authorize],那就太麻烦了。我在想能不能控制到Controller级别呢?于是做了下面的尝试:

    1 [Authorize]
    2 public class AccountController : BaseController
    3 {
    4 } 

    即将属性[Authorize]写到Controller级别,发现是可用。这样就控制了整个Controller都需要认证后才能访问。但是还是得为每一个Controller下都增加属性[Authorize],也有点麻烦。于是,我想到了Webform下常会做一个Pagebase类,我又做了下面的尝试:

    复制代码
    1 [Authorize]
    2 public class BaseController : Controller
    3 {
    4 }

    6 public class AccountController : BaseController
    7 {
    8 }
    复制代码

    也就是建立一个BaseController基类,带上[Authorize]属性,然后需要认证的Controller都继承这个基类即可。测试通过,那就OK了。今天工作差不多就能到这了。

      但也有一些问题,比较普遍的就是在控制Action的角色权限时,需要写死[Authorize(Roles = "manager")]。很多人在问,能不能那个角色能动态的从数据库读取呢?其实我也没有办法。包括以前Webform认证时按角色控制目录的访问属性,也需要在Web.config中写死。

      不过,我有个想法,还没实践,那就是在BaseController中增加相应的虚Action或抽象Action,在这一级定义好[Authorize]属性,或者进行动态的读取,其余的Action重写实现就可以了。不知道可不可行。有时间试一下。

      今天暂时就这么多,记一下,给自己也是个提醒。

  • 相关阅读:
    电脑华硕A455L系列,机械硬盘换成固态硬盘,光驱位改放机械硬盘
    帮助命令
    文件搜索命令
    命令基本格式及文件处理命令
    Jupyter Notebook出现kernel error情况
    八、数据拟合分析seaborn
    Scrapy中的错误
    (续篇)Selenium 安装配置以及如何解决('chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/ch)或者(unknown error:cannot find Chrome binary)问题?
    如何安装selenium以及scrapy,最重要的是pip?
    五、SVM推导过程
  • 原文地址:https://www.cnblogs.com/xieyulin/p/7085677.html
Copyright © 2011-2022 走看看