Asp.net Controller中View 和Action方法认证Authorize 及对AuthorizeAttribute扩展
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扩展相关推荐
- ASP.NET Core 中是否有 PostAsJsonAsync() 方法?
咨询区 LP13 在 Asp.NET 中我一般都用 PostAsJsonAsync() 做数据提交,在 Asp.NET Core 时代我貌似没有找到,按照程序集的命名规范,我觉得应该也是由 Micro ...
- netcore 编译 html,Asp.Net Core中的@ Html.Action
小编典典 更新:从2.2.2版本开始,HttpContextAccessor将上下文保留在一个对象中(据说是为了防止请求之间的混淆),这会影响当前解决方案-因此,您需要为IHttpContextAcc ...
- ASP.NET MVC中的路由IRouteConstraint方法应用实例
在如下代码的写法中: public class RouteConfig{public static void RegisterRoutes(RouteCollection routes){routes ...
- MVC Controller中View(model)如何在 View中的index页面获得?
http://bbs.csdn.net/topics/390723984?page=1 在页面顶部定义 @model List<UserModel> 使用 @foreach(var x i ...
- ASP.NET中添加View与Razor引擎以及View解析和Controller向View传值
场景 ASP.NET中MVC添加Controller以及访问其Action: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106 ...
- ASP.NET MVC中controller和view相互传值的方式
ASP.NET MVC中Controller向view传值的方式: ViewBag.ViewData.TempData 单个值的传递 Json 匿名类型 ExpandoObject Cookie Vi ...
- 帆软报表跨域之插件开发中Controller中定义的方法实现JSONP跨域
在插件开发中,我们自己开发的Controller中的接口有时候需要对外提供,这时就涉及到跨域,常见的跨域有很多,本专栏只介绍JSONP与跨域资源共享(CORS). JSONP由于只支持GET方式,所以 ...
- ASP.NET MVC下的异步Action的定义和执行原理
Visual Studio提供的Controller创建向导默认为我们创建一个继承自抽象类Controller的Controller类型,这样的Controller只能定义同步Action方法.如果我 ...
- ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器
原文:Filters 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:何镇汐 ASP.NET MVC 过滤器 可在执行管道的前后特定阶段执行代码.过滤器可以配置为全局有效.仅对控 ...
- 关于 ASP.NET MVC 中的视图生成
在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据. 从控制器到视图 通 ...
最新文章
- 云计算或将逐步被认可
- cve-2019-11581 Atlassian Jira未授权服务端模板注入漏洞
- python编程做什么工作-什么样的人要学点python编程?请你对号入座
- OpsRamp推出以服务为中心的AIOps和云监控功能
- sqlserver中的查询两个结果集的差的运算
- 基于geopandas的空间数据分析——空间计算篇(下)
- 实现连麦_微信年底放了个大招,视频号重磅升级,打赏直播连麦美颜抽奖齐上...
- IDE:5个最喜欢的NetBeans功能
- 【arc068F】Solitaire
- OpenShift 4 - 下载OpenShift项目中的ImageStream
- 一些很好的工具软件~
- 基础知识复习(一)——C语言位运算符详解
- 怎么把java安装到64位_怎么安装64位JAVA,大师来详解
- linux下载git并为git配置连接ssh
- 小米路由器r1d刷第三方_小米R1D路由器刷Advacned Tomato V3.4-140固件
- C语言 输出斐波那契数列
- 优化算法 - 遗传算法
- JS 数字,金额 用逗号 隔开(数字格式化)
- Anbox之arm平台lxc调试(十一)
- 人类一败涂地!DeepMind再次制霸Atari游戏,比两年前快了200倍
热门文章
- java questionbank_JavaQuestionBank
- brew mysql要多久_mac brew 安装 mysql
- java spring boot2 springMVC thymeleaf 整合案例
- JavaScript 页面刷新方式汇总
- java sleep唤醒_[JavaEE]如何唤醒Sleep中的线程
- LoRa无线技术介绍
- Math、Number、String 、Array、Object 的新 APIs
- Spring随笔(04)
- Python 线程 进程 协程
- linux(5)--补充(管道| / 重定向 / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)...