passport.authenticate () в структуре контроллеров маршрутизации - PullRequest
0 голосов
/ 08 марта 2019

Я новичок в разработке JavaScript / TypeScript, и в настоящее время я расширяю экспресс-приложение с помощью единого входа в систему. Экспресс-приложение использует каркас контроллеров маршрутизации для обработки запросов и должен использовать passport-saml для аутентификации. Мне уже удалось заставить аутентификацию работать со стандартными экспресс-маршрутами:

export class SsoRoutes {
    public router: Router;

    constructor() {
        this.router = Router();
    }


    this.router.get('/login-sso', passport.authenticate('saml'));

    this.router.post('/login-sso/consume', passport.authenticate('saml', {
        failureRedirect: '/',
        failureFlash: true,
        session: false
    }), function (req, res) {
        // handle callback

    });
}

Но я не могу понять, как использовать метод passport.authenticate(...) в рамках контроллера маршрутизации. Может кто-нибудь объяснить мне это?

1 Ответ

0 голосов
/ 01 апреля 2019

Решение, которое я бы выбрал, - это создание вашего собственного промежуточного программного обеспечения, которое будет обрабатывать passport.authenticate() (ознакомьтесь с тем, как это сделать здесь ). Затем вы можете использовать свое собственное промежуточное программное обеспечение с @UseBefore() декоратором.

@Get("/login-sso")
@UseBefore(yourFirstMiddleware)
loginSso() {
    // ... something you want to do after passport.authenticate()
}

и аналог для второй конечной точки:

@Post("/login-sso/consume")
@UseBefore(yourSecondMiddleware)
loginSso() {
    // ... some other action you want to do after
}

Для других решений проверьте документацию используемой платформы.

...