WebApi过滤器1

public class TestController : ApiController
{
  /// <summary>
  /// 获取用户信息
  /// </summary>
  /// <param name="num">名称</param>
  /// <returns></returns>
  [CustAuthorize]
  public ResultInfo GetUserInfo(int num)
  {
    List<UserInfoViewModel> list=
    new List<UserInfoViewModel>() { new UserInfoViewModel() { Email="960883105@qq.com",HasRegistered=true,LoginProvider="hu"},
    new UserInfoViewModel() { Email="782323@qq.com",HasRegistered=false,LoginProvider="33d"}
  };
  return new ResultInfo(){Status="100", Message = "",Data=list };
  }
  /// <summary>
  /// 测试2
  /// </summary>
  /// <param name="roles">参数2</param>
  /// <returns></returns>
  [CustAuthorize]
  [System.Web.Http.HttpPost]
  public ResultInfo GetUserInfo2()
  {
    List<UserInfoViewModel> list =
      new List<UserInfoViewModel>() { new UserInfoViewModel() { Email="960883105@qq.com",HasRegistered=true,LoginProvider="hu"},
      new UserInfoViewModel() { Email="782323@qq.com",HasRegistered=false,LoginProvider="33d"}
    };
    return new ResultInfo() { Status = "100", Message = "", Data = list };
  }

}

/// <summary>
/// 过滤器
/// </summary>
public class CustAuthorizeAttribute : AuthorizeAttribute
{
  //判断权限
  /// <summary>
  ///
  /// </summary>
  /// <param name="actionContext"></param>
  /// <returns></returns>
  protected override bool IsAuthorized(HttpActionContext actionContext)
  {
    string[] rolelist = { "102", "103", "104", "105", "106" };

    var queryString = HttpUtility.ParseQueryString(actionContext.Request.RequestUri.Query);
    var myQueryParam = queryString["roles"];
    if (rolelist.Contains(myQueryParam))
    {
    return true;
    }
    else
    {
    return false;
    }
  }
  //权限为false执行内容
  /// <summary>
  ///
  /// </summary>
  /// <param name="actionContext"></param>
  protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
  {
    base.HandleUnauthorizedRequest(actionContext);
  }

WebApi过滤器2

MVC过滤器

public class TestController : Controller
{
  [CustAuthorize("102")]
  public ActionResult List()
  {
    return View();
  }
}

public class CustAuthorizeAttribute : AuthorizeAttribute
{
  public String[] roles;

  public CustAuthorizeAttribute(params String[] role)
  {
    roles = role;
  }

  protected override bool AuthorizeCore(HttpContextBase httpContext)
  {
  
    String role = "1012";
    bool b = roles.Contains(role);
      return b;
  }

  protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
  {
    filterContext.HttpContext.Response.Write("<script>alert('无权限')</script>");

  }

}

 MVC登录验证

public class UserAuthenAttribute : FilterAttribute, IAuthenticationFilter
{
  public void OnAuthentication(AuthenticationContext filterContext)
  {

    var user = Cache.ReourseRedis.GetUserIfo();
    var url = filterContext.HttpContext.Request.Url.ToString();
    if (user==null && url.IndexOf("Login")<0)
    {
      filterContext.Result = new RedirectResult("/Test/Login");
    }
  }

  public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
  {

  }
}

全局错误信息

namespace WebApplication1.App_Start
{
public class ApiExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{

var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(new ResultInfo() { Status = "102", Message = "error" }));
context.Response = response;

base.OnException(context);

}
}
}

Glob文件=》

GlobalConfiguration.Configuration.Filters.Add(new ApiExceptionFilterAttribute());

net 网站过滤器 mvc webapi的更多相关文章

  1. MVC WebAPI 三层分布式框架开发

    版权声明:本文为博主原创文章,未经博主允许不得转载. 前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层分布式框架开发,以此适用于企业信息系统的业务处理 ...

  2. 转载CSDN (MVC WebAPI 三层分布式框架开发)

    前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层分布式框架开发,以此适用于企业信息系统的业务处理,是本文论述的重点.此外,插件技术的应用,富客户端JQ ...

  3. MVC WebApi 用户验证 (2)

    构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(66)-MVC WebApi 用户验证 (2)   前言: 构建ASP.NET MVC5+EF6+E ...

  4. MVC—WebAPI(调用、授权)

    ASP.NET MVC—WebAPI(调用.授权)   本系列目录:ASP.NET MVC4入门到精通系列目录汇总 微软有了Webservice和WCF,为什么还要有WebAPI? 用过WCF的人应该 ...

  5. 构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(66)-MVC WebApi 用户验证 (2)

    前言: 构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(65)-MVC WebApi 用户验证 (1) 回顾上一节,我们利用webapi简单的登录并 ...

  6. 线程安全使用(四) [.NET] 简单接入微信公众号开发:实现自动回复 [C#]C#中字符串的操作 自行实现比dotcore/dotnet更方便更高性能的对象二进制序列化 自已动手做高性能消息队列 自行实现高性能MVC WebAPI 面试题随笔 字符串反转

    线程安全使用(四)   这是时隔多年第四篇,主要是因为身在东软受内网限制,好多文章就只好发到东软内部网站,懒的发到外面,现在一点点把在东软写的文章给转移出来. 这里主要讲解下CancellationT ...

  7. ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目

    ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)   我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...

  8. 关于MVC WebAPI 中加入任务调度功能的问题 (MVC WebAPI 任务调度)

    在MVC WebAPI中加入任务调度功能.即在MVC WebAPI启动时,启用任务调度程序. 但是这里有一个问题点,就是部署好IIS站点后,发现任务调度并没有启用.原因为何? 原因是部署好IIS站点后 ...

  9. ASP.NET Core MVC/WebAPi 模型绑定探索

    前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...

随机推荐

  1. 1.zookeeper原理解析-数据存储之Zookeeper内存结构

    Zookeeper是怎么存储数据的,什么机制保证集群中数据是一致性,在网络异常,当机以及停电等异常情况下恢复数据的,我们知道数据库给我们提供了这些功能,其实zookeeper也实现了类似数据库的功能. ...

  2. Python中的IndentationError解决

    用Python .join拼接SQL的时候遇到一个错误:TypeError: cannot concatenate 'str' and 'dict' objects,检查了一下确认是join了两个类型 ...

  3. vue v-for直接循环数字

    <svg class="icon" aria-hidden="true" v-for="index of 5" :key=" ...

  4. Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)

    示例代码如下: package com.miracle.luna.lambda; import java.util.Arrays; /** * @Author Miracle Luna * @Date ...

  5. Elasticsearch 6.2.3版本 Windows环境 简单操作

    背景描述 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎库. El ...

  6. MySQL 创建函数报错 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators

    问题描述 通过Navicat客户端,创建MySQL函数(根据的当前节点查询其左右叶子节点)时报错,报错信息如下: This function has none of DETERMINISTIC, NO ...

  7. delphi中 formclose的事件 action:=cafree form:=nil分别是什么意思?

    MDI子窗体关闭时用到的(以下摘自Delphi的帮助)caNone  The form is not allowed to close, so nothing happens.caHide  The ...

  8. linux 系统下删除tar.gz的tar

    在终端输入: 1.删除环境配置 vi /etc/profile 删除对应的jdk配置. 2.删除jvm rm /usr/lib/jvm 3.删除对应的tar解压的java目录. 4.输入 java 或 ...

  9. nginx报错:nginx: [emerg] unknown directive in /etc/nginx/conf.d/test.conf:4

    nginx报错:nginx: [emerg] unknown directive  in /etc/nginx/conf.d/test.conf:4 解决: 第四行出现了 tab 空格 , 换成正常的 ...

  10. Activity启动场景Task分析(二)

    场景分析 下面通过启动Activity的代码来分析一下: 1.桌面 首先,我们看下处于桌面时的状态,运行命令: adb shell dumpsys activity 结果如下 ACTIVITY MAN ...