小白网-奉贤部落-奉贤免费信息发布平台

查看: 21|回复: 0
打印 上一主题 下一主题

登录认证怎么弄(登录认证处理如何去除登录认证记录)

[复制链接]

2万

主题

2万

帖子

7万

积分

论坛元老

Rank: 8Rank: 8

积分
78182
跳转到指定楼层
楼主
发表于 2025-7-26 12:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
登录认证是所有后端服务器的必备功能。今天,我们将在框架中添加一个统一的登录认证逻辑。我们使用JWT来实现登录认证。
安装库yarn add jsonwebtokenyarn add @ types/jsonwebtoken
创建JWT处理模块以增加秘密配置// .envAUTH_SECRET=secret
//src/config/index . tsSECRET:process . env . auth _ SECRET | | ' SECRET '
  • 实现令牌的生成和分析接口。//src/utils/auth . ts从“jsonwebtoken”导入jwt从'导入配置../config ';export const verify token =(token:string):Record =  gt;{try {return { data:jwt . verify(token,config.secret),error:null };} catch(error){return { data:{ },error };}};
    创建认证中间件ctx.state作为中间件消息传递的载体,具体来说,我们添加到ctx.state对象中的属性和值可以在其他ctx参数中获取,这样当我们的认证接口进行Token认证时,我们可以将用户信息添加到ctx.state中,这样就可以通过ctx.state.user在其他处理接口中获取当前登录的用户信息。
    //src/middleware/auth middleware . ts从“koa”导入类型{ Context,Next };从'导入{ verifyToken }../utils/auth ';/* ** @描述登录认证中间件* @ param CTX* @ param nextconst auth middleware = async(CTX:context,next:next)= {const { authorization } = CTX . request . header;如果(!authorization){CTX . throw(401,'未登录');}const token = authorization . split(')[1];const { data,error } = verify token(token);如果(!error){CTX . state . user = data;} else {switch(error . name){case ' tokenexpire error ':CTX . throw(401,'登录已过期');break;默认值: ctx.throw (400,'令牌错误');break;}}wait next();};导出默认的authMiddleWare
    通过用中间件修饰路由,增加一个用户管理模块。
  • 获取用户界面//src/controller/user/view . ts从“koa”导入{ Context };从'导入响应../../utils/response ';class user controller {async getUser(CTX:Context){const { user } = CTX . state;if(user){response . success(CTX,ctx.state.user,'成功获取用户信息');} else {response . error(CTX,“用户未登录”);}}}导出默认的新user controller();
  • 添加用户信息获取途径//src/controller/user/router . ts从‘KOA-router’导入KoaRouter从'导入UserController。/view ';从'导入authMiddleWare../../middleware/auth middleware ';const router = new KOA router();router.get('/getUser ',authMiddleWare,user controller . getUser);导出默认路由器;
    AuthMiddleWare可以添加到任何需要登录认证的路由中,从而实现登录认证。另一种方式是使用koa-jwt库,通过全局注册中间件为所有路由添加登录认证,将不需要认证的路由添加到白名单中。按照大致思路,我们所有的网站都应该默认要求登录认证,特殊路线可以办理。但是,我觉得koa-jwt不够优雅。注册路由时最好为指定的路由添加authMiddleWare。
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|小白网-奉贤部落-奉贤免费信息发布平台  

    GMT+8, 2025-8-21 23:46 , Processed in 0.054578 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表