快递 + TSOA + 护照 编辑:

我是 PassportTSOA 的新手。我正在尝试将旧的 Express 路由迁移到 tsoA 控制器,但我不知道如何实现这一点。我没有找到任何关于此的文档,事实上,我找到了 this issue,但我认为我需要一个解决方法。

router.post(
    '/register',(req: Request,res: Response,next) => {
        const user: IUserData = req.body

        if (validator.isEmpty(email)) 
            return res.status(422)
                .json({ error: 'Email is mandatory' })

        if (validator.isEmpty(password.trim()))
            return res.status(422)
                .json({ error: 'Password is mandatory' })

        next()
    },passport.authenticate('local'),async (req: Request,res: Response) => {
        if (req.user)
            return res.json({ message: 'Already logged in' })

        const existingUser: IUser = await UserModel.findOne({ email: req.body.email })
        if (existingUser)
            return res.status(400)
                .json({ error: 'User exists' })

        const data: IUserData = req.body

        try {
            const hashedPassword = await bcrypt.hashSync(data.password,parseInt(process.env.SALT_ROUNDS) || 10)
            data.password = hashedPassword
        } catch(error) {
            return res.status(500)
                .json({ error: error.message })
        }
        
        try {
            const user: IUser = await new User(data)
            await user.save()
            res.json(user);
        } catch(error) {
            return res.status(500)
                .json({ error: error.message });
        }
        return;
    }
);

我曾尝试将此代码“复制”到 tsoA 控制器中,但我不知道如何应用中间件:

@Route('/auth')
export class AuthController extends Controller {
    @Post()
    public async register(@BodyProp() user: IUserData) {
        const errors: Array<IAuthError> = []

        if (validator.isEmpty(user.emailaddress)) {
            this.setStatus(422)
            return { error: 'Email is mandatory' }
        }

        if (validator.isEmpty(user.password.trim())) {
            this.setStatus(422)
            return { error: 'Password is mandatory' }
        }
    }
}

// to be continued ...

我也可以在不同的文件(没有任何控制器)中分离这个特定的路由,但我不知道这是否有效。我想不会。

我应该如何管理这个?

编辑:

我刚刚阅读了关于 tsoA 身份验证的 this article,它似乎通过使用中间件来处理身份验证。

jiulongrushui 回答:快递 + TSOA + 护照 编辑:

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/338.html

大家都在问