不要叫我狗哥 2024-03-23 14:01 采纳率: 8.3%
浏览 47
已结题

abpvnext如何重写tokenController控制器

abp vnext动模板自带了生成token的方法,返回值为

{
    "access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IkE5NEQ4RTM1Qjc4QzEzNDdDQzVBM0E4RUY4MDdBMjRBRTdEMDM1QjgiLCJ4NXQiOiJxVTJPTmJlTUUwZk1XanFPLUFlaVN1ZlFOYmciLCJ0eXAiOiJhdCtqd3QifQ.eyJzdWIiOiJmNzcxMTEzYS0yYThkLTI5YTctNjE5Yi1mYzE0OWYwY2E0MjYiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ1c2VyX3Rlc3QiLCJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJyb2xlIjoiYWRtaW4iLCJnaXZlbl9uYW1lIjoidXNlcl90ZXN0IiwiZmFtaWx5X25hbWUiOiJ1c2VyX3Rlc3QiLCJwaG9uZV9udW1iZXIiOiIxNTU4ODg4OTk5OSIsInBob25lX251bWJlcl92ZXJpZmllZCI6IkZhbHNlIiwiZW1haWxfdmVyaWZpZWQiOiJGYWxzZSIsInVuaXF1ZV9uYW1lIjoidXNlcl90ZXN0Iiwib2lfcHJzdCI6IldNU1NlcnZlcl9BcHAiLCJjbGllbnRfaWQiOiJXTVNTZXJ2ZXJfQXBwIiwib2lfdGtuX2lkIjoiMTI3YzExM2EtOTcwZS02YzUzLThmZDgtMTVkYTRhNTk0ZWUyIiwiZXhwIjoxNzExMTc3MjEzLCJpc3MiOiJodHRwczovLzE5Mi4xNjguMzEuMjEwOjQ0Mzg5LyIsImlhdCI6MTcxMTE3MzYxM30.CuSm_I-2-CE5aD2nE1BEDFESFE5GHHjz1G1vT7bFK7Aq5Lt4DOMqSac5t96Fb-fo_-LyR3uFEWT_rXSx0XOknDelQis9lz9EJkC-aTh7L_SNUGBmNVMkArqrjTPnzK3THyMr7iClCFQa6--5NiApnguTRay8--yYxiqcim8LQDyf-kLDfosM4sQT8rB1c5Wi6Ir7UReiYQstkgXFRO5pWExRxAybPn3sBB6MMwe8Gk0SE53a8kRjBJ6ya9qqIToFylbvRyHKsMkV2y9GgabLEKynNN25yNj5Giy7zI-nPPpALv0kE3lmb15hQ_LtjV8S_omQEfKLdu_W4XRwiXirvQ",
    "token_type": "Bearer",
    "expires_in": 3599
}

现在前端希望返回这样的格式

{
    "code":200,
    "message":"success",
    "data":{
    "access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IkE5NEQ4RTM1Qjc4QzEzNDdDQzVBM0E4RUY4MDdBMjRBRTdEMDM1QjgiLCJ4NXQiOiJxVTJPTmJlTUUwZk1XanFPLUFlaVN1ZlFOYmciLCJ0eXAiOiJhdCtqd3QifQ.eyJzdWIiOiJmNzcxMTEzYS0yYThkLTI5YTctNjE5Yi1mYzE0OWYwY2E0MjYiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ1c2VyX3Rlc3QiLCJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJyb2xlIjoiYWRtaW4iLCJnaXZlbl9uYW1lIjoidXNlcl90ZXN0IiwiZmFtaWx5X25hbWUiOiJ1c2VyX3Rlc3QiLCJwaG9uZV9udW1iZXIiOiIxNTU4ODg4OTk5OSIsInBob25lX251bWJlcl92ZXJpZmllZCI6IkZhbHNlIiwiZW1haWxfdmVyaWZpZWQiOiJGYWxzZSIsInVuaXF1ZV9uYW1lIjoidXNlcl90ZXN0Iiwib2lfcHJzdCI6IldNU1NlcnZlcl9BcHAiLCJjbGllbnRfaWQiOiJXTVNTZXJ2ZXJfQXBwIiwib2lfdGtuX2lkIjoiNGY3YjExM2EtOTVmNi05OTAzLTRhMDktMDY2NGVlYmMzMmEzIiwiZXhwIjoxNzExMTY0NDkzLCJpc3MiOiJodHRwczovLzE5Mi4xNjguMzEuMjEwOjQ0Mzg5LyIsImlhdCI6MTcxMTE2MDg5M30.HsAuewgub8Rt3_mgyW45NfwEmgznIkUipe5qEjZG12zWmHKLcjnGvv-Hm7BShp3zrlNi4oYzOkemCra7uKTZiUA83034peUoIPTyg3AtBFrzzz0foB9z3J6SdrTL5qJDSw17D2lbgjadO_qunqR1Rb7BkqDDhaAcB3fXHUv2aV7M9ZHVVszEZjWDJX_QDfp2q6HPWOMUPMTAuGlq4pQSPyhx91D-pyTkir4YiIQ08-KB3zp9Tqjtbho6_mLuv0dk-El-2ecGT9cENGn6eu5kQ-eIE_qgXvC6xuXiWuh3nDe_E4tBIqX3KZi1PilCo6a5BSCby6ALpGfXTxd4U0WT0w",
    "token_type": "Bearer",
    "expires_in": 3599
    }
}

应该怎么做

  • 写回答

18条回答 默认 最新

  • 社区专家-Monster-XH 2024-03-23 18:24
    关注
    获得0.45元问题酬金

    基于Monster 组和AIGC的调写:若有帮助,还望采纳~~:

    1. 创建新控制器,继承自TokenController。
    2. 重写生成token的方法,捕获原方法的返回值。
    3. 修改返回格式,包装原来的返回值到新的格式中。
    4. 配置路由,要前端调用的是新的控制器方法。

    修改控制器来改变返回的token格式:

    using Microsoft.AspNetCore.Authorization;
    using Microsoft.AspNetCore.Mvc;
    using Volo.Abp.AspNetCore.Mvc;
    
    [Route("custom-token")]
    public class CustomTokenController : AbpController
    {
        private readonly TokenController _tokenController;
    
        public CustomTokenController(TokenController tokenController)
        {
            _tokenController = tokenController;
        }
    
        [HttpPost]
        [AllowAnonymous]
        public async Task<IActionResult> GetToken(MyCustomTokenRequestDto requestDto)
        {
            // 调用原始的TokenController获取token
            var tokenResult = await _tokenController.Get(requestDto);
    
            // 检查原始响应是否成功
            if (!tokenResult is ObjectResult objectResult)
            {
                return tokenResult;
            }
    
            // 创建新的返回格式
            var newResult = new
            {
                code = 200,
                message = "success",
                data = objectResult.Value
            };
    
            // 返回修改后的结果
            return Ok(newResult);
        }
    }
    
    // 这里应该要一个匹配TokenController期望的DTO
    public class MyCustomTokenRequestDto
    {
        // 根据TokenController要求添加属性
    }
    

    根据Token修改代码。另外,TokenController要传入一些服务或参数,也要确保在你的自定义控制器中注入这些依赖。

    接下来更新路由配置,确保前端调用的是新的CustomTokenController

    最后在你的系统中注册了这个新的控制器,并且前端调用的是正确的端点。

    评论

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 创建了问题 3月23日

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音