志在指尖
用双手敲打未来

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

我们的项目原本是用azure的auth认证,是用过程中发现登录速度太慢了,所以还是本人搞一个吧,没想到搞起来挺简单的,不是用一个特地的认证效劳器哈,就是一个简单的工具类。
考证能否登录的类c#
复制代码
///
///认证类继承
///
publicclassRequestAuthorizeAttribute:AuthorizeAttribute
{
publicoverridevoidOnAuthorization(HttpActionContextactionContext)
{
//能否不需求考证或者曾经登录
if(SkipAuthorization(actionContext)||IsLogin(actionContext))
return;
actionContext.Response=GetResponse();
}
///
///返回信息接口
///
privateHttpResponseMessageGetResponse()
{
varresponse=ServiceResponse<bool>.WarningResponse(401,CommonConst.Msg_NoLogin,false);
returnJsonHelper.ToHttpResponseMessage(response);
}
///
///判别能否匿名运用接口
///
privatestaticboolSkipAuthorization(HttpActionContextactionContext)
{
if(!actionContext.ActionDescriptor.GetCustomAttributes().Any())
returnactionContext.ControllerContext.ControllerDescriptor.GetCustomAttributes().Any();
returntrue;
}
///
///能否曾经登录
///
privateboolIsLogin(HttpActionContextactionContext)
{
varauthorization=Guid.Empty.ToString();//MD5值
if(actionContext.Request.Headers.Authorization!=null)
{
authorization=actionContext.Request.Headers.Authorization.ToString();
}
varuser=OperatorProvider.Provider.GetCurrent(authorization);
returnuser!=null;
}
}
复制代码
运用
登录接口数据缓存处置,获取到用户信息后,生成guid作为token,每次登录都会重重生成token,返回给恳求来源,web端只保管token值即可,每次恳求的时分把token放到header里面。
BaseApiController处置,获取header里面的token值,把用户信息放到缓存里面,从缓存中获取后放到基类里面的model中,子类都能够运用用户信息。
复制代码
[RequestAuthorize]
publicclassBaseApiController:ApiController
{
///
///当前用户信息实体
///
publicOperatorModelCurrentUserModel
{
get
{
varvalues=HttpContext.Current.Request.Headers.GetValues(“authorization”);
varauthorization=Guid.Empty.ToString();
if(values!=null&&values.Length>0)
authorization=values[0];
varcurrentUserModel=OperatorProvider.Provider.GetCurrent(authorization);
if(currentUserModel==null)
{
currentUserModel=newOperatorModel{LoginName=”admin”};
}
returncurrentUserModel;
}
}
}
复制代码
web端运用token(VUE)
token协助类
复制代码
importCookiesfrom’js-cookie’
constTokenKey=’hs_t’
exportfunctiongetToken(){
returnCookies.get(TokenKey)
}
exportfunctionsetToken(token){
returnCookies.set(TokenKey,token)
}
exportfunctionremoveToken(){
returnCookies.remove(TokenKey)
}
复制代码
login.vue
复制代码
复制代码
复制代码
复制代码

未经允许不得转载:IT技术网站 » c# 自定义考证登录(Authorize)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载