c#自定义验证登录(Authorize)

c#自定义验证登录(Authorize)

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

c#⾃定义验证登录(Authorize)我们的项⽬本来是⽤azure的auth认证,是⽤过程中发现登录速度太慢了,所以还是⾃⼰搞⼀个吧,没想到搞起来挺简单的,不是⽤⼀个专门的认证服务器哈,就是⼀个简单的⼯具类。验证是否登录的类 ///

/// 认证类继承 /// public class RequestAuthorizeAttribute : AuthorizeAttribute { public override void OnAuthorization(HttpActionContext actionContext) { // 是否不需要验证 或者 已经登录 if (SkipAuthorization(actionContext) || IsLogin(actionContext)) return; se = GetResponse(); } /// /// 返回信息接⼝ /// private HttpResponseMessage GetResponse() { var response = ServiceResponse.WarningResponse(401, _NoLogin, false); return ResponseMessage(response); } /// /// 判断是否匿名使⽤接⼝ /// private static bool SkipAuthorization(HttpActionContext actionContext) { if (!tomAttributes().Any()) return tomAttributes().Any(); return true; } /// /// 是否已经登录 /// private bool IsLogin(HttpActionContext actionContext) { var authorization = ng(); // MD5值 if (ization != null) { authorization = ng(); } var user = rent(authorization); return user != null; } }获取header值:参考资料:代码如下:

private bool IsLogin(HttpActionContext actionContext) { var token = ng(); // MD5值 var openId = ; // MD5值 Values("Token", out var tokens); Values("OpenId", out var openIds); if (ull() && () && ull() && ()) { token = rDefault(); openId = rDefault(); var cache = he(token); if (ull())//如果缓存中存在该token对应的值,说明已经登录了 return true; //获取⽤户 var strUserUrl = ode(tings["sso_req_user_url"]); var reqUserUrl = (strUserUrl, openId, token); var reqUser = (reqUserUrl) as HttpWebRequest; = "get"; tType = "application/json"; var resUser = ponse() as HttpWebResponse; //以流的形式读取,返回的就是字符串的json格式 StreamReader readerUser = new StreamReader(ponseStream()); var resUserData = End(); if (Code == ) { var suser = alizeObject(resUserData); var userId = (); he(token, userId); return true; } else { return false; } } return false; }

使⽤登录接⼝数据缓存处理,获取到⽤户信息后,⽣成guid作为token,每次登录都会重新⽣成token,返回给请求来源,web端只保存token值即可,每次请求的时候把token放到header⾥⾯。BaseApiController处理,获取header⾥⾯的token值,把⽤户信息放到缓存⾥⾯,从缓存中获取后放到基类⾥⾯的model中,⼦类都可以使⽤⽤户信息。 [RequestAuthorize] public class BaseApiController : ApiController { ///

/// 当前⽤户信息实体 /// public OperatorModel CurrentUserModel { get { var values = ues("authorization"); var authorization=ng(); if (values != null && > 0) authorization = values[0]; var currentUserModel = rent(authorization); if (currentUserModel == null) { currentUserModel = new OperatorModel { LoginName = "admin" }; } return currentUserModel; } } } web端使⽤token(VUE)token帮助类import Cookies from 'js-cookie'const TokenKey = 'hs_t'export function getToken() { return (TokenKey)}export function setToken(token) { return (TokenKey, token)}export function removeToken() { return (TokenKey)}

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687249591a15.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信