用户登录怎么使用过滤器

public class ActionResultAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
//base.OnActionExecuted(actionExecutedContext);

//获取结果值
var result = actionExecutedContext.ActionContext.Response.Content.ReadAsAsync<object>().Result;
//获取状态
var statusCode = actionExecutedContext.Response.StatusCode;
//实例化Model 
ApiResultModel resultModel = new ApiResultModel();
resultModel.StatusCode = statusCode;
//判断状态值是否是请求成功
if (statusCode == HttpStatusCode.OK)
{
resultModel.ErrorMessage = "ok";
//成功给data 赋值
resultModel.Data = result;
}
//失败则
else
{
resultModel.ErrorMessage = "请求错误";
//失败给null
resultModel.Data = null;
}
//重新给响应正文赋值 同样要转换成stringContent
actionExecutedContext.Response.Content = new StringContent(JsonConvert.SerializeObject(resultModel), Encoding.UTF8, "appcliation/json");
}
}

 

/// <summary>
/// 身份验证过滤器
/// </summary>
public class AuthorAttribute : AuthorizeAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
//判断是否有header头 即 是否有token登录成功
if (actionContext.Request.Headers.Contains("UserToken"))
{
//base.OnAuthorization(actionContext);

var UserToken = actionContext.Request.Headers.GetValues("UserToken").FirstOrDefault();
JWTHelper jWTHelper = new JWTHelper();
//解密
var DecodedToken = jWTHelper.GetPayload(UserToken);
//转成用户Model
var jsonToken = JsonConvert.DeserializeObject<UserInfo>(DecodedToken);
//将model值存入 路由data中 方便api中取值 用啥取啥
actionContext.ControllerContext.RouteData.Values.Add("UseInfo_UName", jsonToken.UName);
actionContext.ControllerContext.RouteData.Values.Add("UseInfo_RoleId", jsonToken.RoleId);
}
//没有登录 返回错误信息
else
{
//声明一个响应信息
var msg = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized);
//自己封装的一个Model 进行存值
ApiResultModel result = new ApiResultModel() { StatusCode = HttpStatusCode.Unauthorized, ErrorMessage = "未认证", Data = null };
//将响应正文 进行转换
msg.Content = new StringContent(JsonConvert.SerializeObject(result));
//输出响应值
actionContext.Response = msg;
}


}
}

/// <summary>
/// 过滤器Model
/// </summary>
public class ApiResultModel
{
private HttpStatusCode statusCode;
private object data;
private string errorMessage;
private bool isSuccess;

/// <summary>
/// 状态代码
/// </summary>
public HttpStatusCode StatusCode { get { return statusCode; } set { statusCode = value; } }

/// <summary>
/// 返回的数据
/// </summary>
public object Data { get { return data; } set { data = value; } }
/// <summary>
/// 错误消息
/// </summary>
public string ErrorMessage { get { return errorMessage; } set { errorMessage = value; } }

/// <summary>
/// 是否成功
/// </summary>
public bool IsSuccess { get { return isSuccess; } set { isSuccess = value; } }
}

posted @ 2020-07-19 20:39  派大星_o  阅读(205)  评论(0编辑  收藏  举报