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 == )
{
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

Asp.net Controller中View 和Action方法认证Authorize 及对AuthorizeAttribute扩展的更多相关文章

  1. Asp.net mvc 中View的呈现(一)

    [toc] 我们知道针对客户端的请求,最终都会转换为对 Controller 中的一个 Action 方法的调用,指定的 Action 方法会返回一个 ActionResult 类型的实例来响应该请求 ...

  2. ASP.NET MVC 中 View 的设计

    1. 前言  感觉有好长时间没有接触View 了,周末闲来无事,翻翻书桌上的书来回顾回顾ASP.NET MVC中View的相关内容. 2. View概述  View 通过应用程序在Action 中返回 ...

  3. ASP.NET Web API 框架研究 Action方法介绍

    在根据请求解析出匹配的Controller类型并创建实例后,要在该Controller类型中的众多Action方法中选择与请求匹配的那一个,并执行,然后返回响应. Action方法,其元数据,主要包括 ...

  4. asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比

    通过学习,我们可以发现,在Controller中提供了很多不同的Action返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致 ...

  5. 一步步学习ASP.NET MVC3 (5)——View从Action中获得数据

    请注明转载地址:http://www.cnblogs.com/arhat 在上一章中,我们把Razor的模板技术给大家介绍了一下,当然模板中还有其他的知识点,这个以后我们还会继续讲解.本章我们主要讨论 ...

  6. Asp.net mvc 中View 的呈现(二)

    [toc] 上一节介绍了 Asp.net mvc 中除 ViewResult 外的所有的 ActionResult,这一节介绍 ViewResult. ViewResultBase ViewResul ...

  7. 解析Asp.net Core中使用Session的方法

    2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Core中引 ...

  8. 如何在yii的controller中调用外部action

    问题: 在yii中,一个controller会包含若干个action.有时为了重用或代码管理等目的,我们希望这些action可以单独定义成一个类,然后在controller中使用.那么在yii中要如何 ...

  9. ASP.NET controller TO view 数据传递

    https://stackify.com/viewbag/ In the case of ASP.NET MVC, you have three ways to pass data from the ...

随机推荐

  1. 八、hibernate的查询(HQL)

    HQL:Hibernate Query Language 提供更加丰富灵活.更为强大的查询能力 HQL更接近SQL语句查询语法 面向对象的查询 "from Children where ci ...

  2. vue 实现active点击图片切换

    循环条件下: 1.点击函数@click="active(index)" 获取点击的位置 2.讲索引值传给class,点击哪一个则显示哪一个的样式 3.在data添加ins的初始值 ...

  3. PHP应该学什么,如何学好PHP

    http://blog.sina.com.cn/s/blog_76bdabf70101azl4.html(注:原文来自传智播客) 本文转自http://blog.sina.com.cn/s/blog_ ...

  4. php yield关键字以及协程的实现

    php的yield是在php5.5版本就出来了,而在初级php界却很少有人提起,我就说说个人对php yield的理解 Iterator接口 在php中,除了数组,对象可以被foreach遍历之外,还 ...

  5. linux用户的基本操作2 用户密码管理

    目录 linux系统的基本用户操作2 用户的扩展知识 用户密码管理 linux系统的基本用户操作2 3)使用userdel删除账户 语法 : userdel [-r] username -r 同时删除 ...

  6. mysql基于GTIDS复制

    GTIDS的环境:一台master 192.168.200.111多个slave: 192.168.200.112 192.168.200.113 修改master服务器:[root@localhos ...

  7. Java高频经典面试题(第一季)四:方法的参数传递机制

    考点? 方法的参数传递机制 String,包装类等对象的不可变性 方法的参数传递机制: ①形参是基本数据类型 传递数据值 ②实参是引用数据类型 传递地址值 特殊的类型:String.包装类等对象不可变 ...

  8. 程序猿必备的10款web前端动画插件

    1.基于jQuery的瀑布流图片筛选插件 瀑布流的展现方式在目前的网页中用得越来越广泛,特别是图片和首页文章的动态加载. 今天分享的这款就是基于jQuery的瀑布流图片筛选插件,我们可以点击图片分类名 ...

  9. 浅谈CICD持续集成、持续部署的流程(转)

    Jenkins是一个比较流行的持续集成工具GitLab是存储镜像的镜像仓库由客户端将代码push推送到git仓库,gitlab上配置了一个webHook的东西可以触发Jenkins的构建.进入到Jen ...

  10. PHP clearstatcache() 函数

    定义和用法 clearstatcache() 函数清除文件状态缓存. PHP 会缓存某些函数的返回信息,以便提供更高的性能.但是有时候,比如在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被 ...