전략 패턴(strategy pattern) 은 정책 패턴(policy pattern)이라고도 하며, 객채의 행위를 바꾸고 싶은 경우 ‘직접’ 수정하지 않고 전략이라고 부르는 **‘캡슐화한 알고리즘’**을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴입니다.

Untitled

컨텍스트

passport 의 전략 패턴

// LocalStratege
var passport = require('passport')
    , LocalStrategy = require('passport-local').Strategy;

passport.use(new LocalStrategy(
    function(username, password, done) {
        User.findOne({ username: username }, function (err, user) {
          if (err) { return done(err); }
            if (!user) {
                return done(null, false, { message: 'Incorrect username.' });
            }
            if (!user.validPassword(password)) {
                return done(null, false, { message: 'Incorrect password.' });
            }
            return done(null, user);
        });
    }
));
// FacebookStrategy
var passport = require('passport')
var FacebookStrategy = require('passport-facebook').Strategy;

passport.use(new FacebookStrtegy({
		clientId: FACEBOOK_APP_SECRET,
		clientSecret: "<http://localhost:3000/auth/facebook/callback>"
	},
		function(accessToken, refreshToken, profile, cb) {
				User.findOrCreate({ facebookId: profile.id }, function (err, user) {
						return cb(err, user)
				});
		}
));