2023年6月20日发(作者:)

e登录授权过滤器using tication;using ization;using ;using ;using ;using ization;using s;using g;using s;using System;using c;using ;using ;using ;using ;using WebNetCore5_Img_;namespace WebNetCore5_Img_r{ //IAuthorizationService //DefaultAuthorizationService //AuthorizationFilter //izeFilter // AuthorizeAttribute // AuthorizationHandler // IAuthorizationHandler //AuthorizationHandler //IAuthorizationMiddlewareResultHandler //AuthorizeFilter // AuthorizationHandler //FilterAttribute // DefaultAuthorizationHandlerProvider ///

///

检查登录,授权验证 ///

public sealed class LoginFilter : Attribute, IAsyncAuthorizationFilter { public LoginFilter() { } public LoginFilter(string funId) { FunId = funId; } /// ///

⽅法标识id ///

private string FunId { get; set; } public Task OnAuthorizationAsync(AuthorizationFilterContext context) { bool isAjax = IsAjax(t); string sessionJson = ing("user"); if (OrWhiteSpace(sessionJson)) { if (isAjax) { //⽆权访问 // = new UnauthorizedResult(); = new JsonResult(new { Code = 500, Msg = "登录失效,请重新登录" }) = new JsonResult(new { Code = 500, Msg = "登录失效,请重新登录" }) { StatusCode = 401Unauthorized }; return tedTask; } //没有登录,去登录 = new RedirectResult("/user/LoginView"); return tedTask; } if (OrWhiteSpace(FunId)) { return tedTask; }

检查⽤户权限 var userView = alize(sessionJson); bool have = (x => == FunId); if (have) { return tedTask; }

if (isAjax) { //⽆权访问 // = new UnauthorizedResult(); = new JsonResult(new { Code = 500, Msg = "你⽆权访问" }) { StatusCode = 401Unauthorized }; } else { //⽆权访问 // = new UnauthorizedResult(); = new ContentResult() { Content = "你⽆权访问", StatusCode = 401Unauthorized }; } return tedTask; } ///

///

判断是否为ajax请求 ///

/// /// public static bool IsAjax(HttpRequest req) { //X-Requested-With: XMLHttpRequest bool result = false; var xreq = nsKey("x-requested-with"); if (xreq) { result = s["x-requested-with"] == "XMLHttpRequest"; } return result; } }}调⽤: //view

图册/视频固定标签管理 [LoginFilter("50002")] public async Task TagList(Atlas_tag atlas_Tag, int p = 1, int rows = 10) { var page = await las_tag(atlas_Tag, p, rows); var pageList = dList(, p, rows, ); return View(pageList); }

2023年6月20日发(作者:)

e登录授权过滤器using tication;using ization;using ;using ;using ;using ization;using s;using g;using s;using System;using c;using ;using ;using ;using ;using WebNetCore5_Img_;namespace WebNetCore5_Img_r{ //IAuthorizationService //DefaultAuthorizationService //AuthorizationFilter //izeFilter // AuthorizeAttribute // AuthorizationHandler // IAuthorizationHandler //AuthorizationHandler //IAuthorizationMiddlewareResultHandler //AuthorizeFilter // AuthorizationHandler //FilterAttribute // DefaultAuthorizationHandlerProvider ///

///

检查登录,授权验证 ///

public sealed class LoginFilter : Attribute, IAsyncAuthorizationFilter { public LoginFilter() { } public LoginFilter(string funId) { FunId = funId; } /// ///

⽅法标识id ///

private string FunId { get; set; } public Task OnAuthorizationAsync(AuthorizationFilterContext context) { bool isAjax = IsAjax(t); string sessionJson = ing("user"); if (OrWhiteSpace(sessionJson)) { if (isAjax) { //⽆权访问 // = new UnauthorizedResult(); = new JsonResult(new { Code = 500, Msg = "登录失效,请重新登录" }) = new JsonResult(new { Code = 500, Msg = "登录失效,请重新登录" }) { StatusCode = 401Unauthorized }; return tedTask; } //没有登录,去登录 = new RedirectResult("/user/LoginView"); return tedTask; } if (OrWhiteSpace(FunId)) { return tedTask; }

检查⽤户权限 var userView = alize(sessionJson); bool have = (x => == FunId); if (have) { return tedTask; }

if (isAjax) { //⽆权访问 // = new UnauthorizedResult(); = new JsonResult(new { Code = 500, Msg = "你⽆权访问" }) { StatusCode = 401Unauthorized }; } else { //⽆权访问 // = new UnauthorizedResult(); = new ContentResult() { Content = "你⽆权访问", StatusCode = 401Unauthorized }; } return tedTask; } ///

///

判断是否为ajax请求 ///

/// /// public static bool IsAjax(HttpRequest req) { //X-Requested-With: XMLHttpRequest bool result = false; var xreq = nsKey("x-requested-with"); if (xreq) { result = s["x-requested-with"] == "XMLHttpRequest"; } return result; } }}调⽤: //view

图册/视频固定标签管理 [LoginFilter("50002")] public async Task TagList(Atlas_tag atlas_Tag, int p = 1, int rows = 10) { var page = await las_tag(atlas_Tag, p, rows); var pageList = dList(, p, rows, ); return View(pageList); }