Asp.net Controller中View和Action方法认证Authorize

在建立Web 站点安全性时

1、登录后才可访问系统文件 ——限制 Forms认证

<authentication mode="Forms">
<forms timeout="800" loginUrl="/Login/Index" path="/" protection="All" name="FinancialServicep.Web" slidingExpiration="true" />
</authentication>

2、增加Controller 、Action级别角色、权限、用户认证,下面描述一下角色认证

一、首先在登录时将 角色及相关信息存储如下代码,这里因为系统中需要客户信息较多 所以存储较多 ,仅关心roleCode及可。

  // 设置 FormsAuthentication认证
  FormsAuthentication.SetAuthCookie(loginM.LoginId + "#" + loginM.UserName + "#" + loginM.UserId + "#" + loginM.OrgId + "#" + loginM.OrgType + "#" + loginM.IsSensitive+"#"+ roleCode, false);

二、增加AuthorizeAttribute扩展认证  过滤器。

  

  public class CheckAuthentication : AuthorizeAttribute{public string[] checkRoles;public override void OnAuthorization(AuthorizationContext httpContext){// 获取请求该方法所需角色checkRoles = Roles.Split(',');string controllerName = httpContext.ActionDescriptor.ControllerDescriptor.ControllerName;string actionName = httpContext.ActionDescriptor.ActionName;base.OnAuthorization(httpContext);}protected override bool AuthorizeCore(HttpContextBase httpContext){if (httpContext == null){throw new ArgumentNullException("HttpContext");}if (!httpContext.User.Identity.IsAuthenticated){return false;}if (Roles == null){return true;}if (Roles.Length == 0){return true;}if (checkRoles.Any(httpContext.User.IsInRole)){return true;}foreach (var item in checkRoles){if (WebContext.RoleCode == item){return true;}}return false;}/// <summary>/// 没有权限用户跳转到登录/// </summary>/// <param name="filterContext"></param>protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext){base.HandleUnauthorizedRequest(filterContext);if (filterContext == null){throw new ArgumentNullException("filterContext");}else{filterContext.HttpContext.Response.Redirect("/Login/Index");}}}
}

三、Controller 或Action 加角色限制调用过滤器及可。

        // GET: FinancingLoan[CheckAuthentication(Roles = "Manager,Inv")]public ActionResult Index(){ViewBag.MenuCode = "Menu0018";return View();}

这样做提高了系统访问安全性,Forms认证 限制了未登录用户不可访问网站各功能页,结合CheckAuthentication 过滤器认证 限制了没角相关功能访问角色的用户不可访问。

如有问题及时沟通讨论在评论区,也可加QQ:626382542

转载于:https://www.cnblogs.com/liyanbofly/p/8491936.html

Asp.net Controller中View 和Action方法认证Authorize 及对AuthorizeAttribute扩展相关推荐

  1. ASP.NET Core 中是否有 PostAsJsonAsync() 方法?

    咨询区 LP13 在 Asp.NET 中我一般都用 PostAsJsonAsync() 做数据提交,在 Asp.NET Core 时代我貌似没有找到,按照程序集的命名规范,我觉得应该也是由 Micro ...

  2. netcore 编译 html,Asp.Net Core中的@ Html.Action

    小编典典 更新:从2.2.2版本开始,HttpContextAccessor将上下文保留在一个对象中(据说是为了防止请求之间的混淆),这会影响当前解决方案-因此,您需要为IHttpContextAcc ...

  3. ASP.NET MVC中的路由IRouteConstraint方法应用实例

    在如下代码的写法中: public class RouteConfig{public static void RegisterRoutes(RouteCollection routes){routes ...

  4. MVC Controller中View(model)如何在 View中的index页面获得?

    http://bbs.csdn.net/topics/390723984?page=1 在页面顶部定义 @model List<UserModel> 使用 @foreach(var x i ...

  5. ASP.NET中添加View与Razor引擎以及View解析和Controller向View传值

    场景 ASP.NET中MVC添加Controller以及访问其Action: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106 ...

  6. ASP.NET MVC中controller和view相互传值的方式

    ASP.NET MVC中Controller向view传值的方式: ViewBag.ViewData.TempData 单个值的传递 Json 匿名类型 ExpandoObject Cookie Vi ...

  7. 帆软报表跨域之插件开发中Controller中定义的方法实现JSONP跨域

    在插件开发中,我们自己开发的Controller中的接口有时候需要对外提供,这时就涉及到跨域,常见的跨域有很多,本专栏只介绍JSONP与跨域资源共享(CORS). JSONP由于只支持GET方式,所以 ...

  8. ASP.NET MVC下的异步Action的定义和执行原理

    Visual Studio提供的Controller创建向导默认为我们创建一个继承自抽象类Controller的Controller类型,这样的Controller只能定义同步Action方法.如果我 ...

  9. ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器

    原文:Filters 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:何镇汐 ASP.NET MVC 过滤器 可在执行管道的前后特定阶段执行代码.过滤器可以配置为全局有效.仅对控 ...

  10. 关于 ASP.NET MVC 中的视图生成

    在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据. 从控制器到视图 通 ...

最新文章

  1. 云计算或将逐步被认可
  2. cve-2019-11581 Atlassian Jira未授权服务端模板注入漏洞
  3. python编程做什么工作-什么样的人要学点python编程?请你对号入座
  4. OpsRamp推出以服务为中心的AIOps和云监控功能
  5. sqlserver中的查询两个结果集的差的运算
  6. 基于geopandas的空间数据分析——空间计算篇(下)
  7. 实现连麦_微信年底放了个大招,视频号重磅升级,打赏直播连麦美颜抽奖齐上...
  8. IDE:5个最喜欢的NetBeans功能
  9. 【arc068F】Solitaire
  10. OpenShift 4 - 下载OpenShift项目中的ImageStream
  11. 一些很好的工具软件~
  12. 基础知识复习(一)——C语言位运算符详解
  13. 怎么把java安装到64位_怎么安装64位JAVA,大师来详解
  14. linux下载git并为git配置连接ssh
  15. 小米路由器r1d刷第三方_小米R1D路由器刷Advacned Tomato V3.4-140固件
  16. C语言 输出斐波那契数列
  17. 优化算法 - 遗传算法
  18. JS 数字,金额 用逗号 隔开(数字格式化)
  19. Anbox之arm平台lxc调试(十一)
  20. 人类一败涂地!DeepMind再次制霸Atari游戏,比两年前快了200倍

热门文章

  1. java questionbank_JavaQuestionBank
  2. brew mysql要多久_mac brew 安装 mysql
  3. java spring boot2 springMVC thymeleaf 整合案例
  4. JavaScript 页面刷新方式汇总
  5. java sleep唤醒_[JavaEE]如何唤醒Sleep中的线程
  6. LoRa无线技术介绍
  7. Math、Number、String 、Array、Object 的新 APIs
  8. Spring随笔(04)
  9. Python 线程 进程 协程
  10. linux(5)--补充(管道| / 重定向 / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)...