Web_APIMovieProject/Filters/AuthorizeFilterArrribute.cs
(完整代码) 1KBusing 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 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
