Web_APIMovieProject/Filters/AuthorizeFilterArrribute.cs

(完整代码) 1KB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Http.Controllers;
using System.Threading;
using System.Security.Principal;

namespace Web_APIMovieProject.Filters
{
    public class AuthorizeFilterArrribute:AuthorizeAttribute
    {
        protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext)
        {
                  //actionContext: Action 方法请求上下文
                 //获取请求头部中的授权信息
            var Auth = actionContext.Request.Headers.Authorization;
            if (Auth!=null&&Auth.Scheme.ToLower()=="basic")
            {
                //Auth.parmer  获取请求中的token
                var token = Auth.Parameter;
                return CheckToken(token);
            }
            return false;
        }

        //链接数据库  或者缓存服务器,验证token是否有效
        DataClasses1DataContext db = new DataClasses1DataContext();
        private bool CheckToken(string token)
        {
            if (token!="")
            {
                IEnumerable<Tokens> list = db.Tokens.Where(c => c.Token == token);
                if (list.Count()>0)
                {
                    if (list.First().ExpireDate>DateTime.Now)
                    {
                        //链接数据库获取token编号
                        string userid = list.First().UserID.ToString();
                        //设置当前用户编号 控制器中获取
                        Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(userid), null);
                        return true;
                    }
                }
            }
            return false;
        }
    }

}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。