2014-01-16 6 views
1

Я настраиваю схему аутентификации со стеком MEAN и PassportJS для аутентификации пользователя через поставщика OpenID. Когда пользователь не аутентифицирован, я показываю ссылку, которая перенаправляет пользователя на провайдер OpenID. После проверки подлинности я хочу заменить ссылку на какой-либо текст в строке «Добро пожаловать {user}».Изменить вид на основе роли пользователя с помощью MEAN + Passport

В настоящее время я в состоянии выполнить аутентификацию и сохранить возвращаемый идентификатор, как например:

passport.serializeUser(function(user, done) { 
    done(null, user.identifier); 
}); 

passport.deserializeUser(function(id, done) { 
    User.findByIdAndUpdate(id, {}, { upsert: true }, function(err, user) { 
    done(err, user); 
    }); 
}); 

(? Я реализации мои сериализации и десериализации функции правильно)

Исходя из этого, идентификатор пользователя хранится как файл cookie, а также как ключ в базе данных. Теперь, в моем клиентском коде, какой был бы лучший способ изменить представление (вход в -> приветственный текст) на основе того, был ли пользователь аутентифицирован?

ответ

1

Вы можете проверить, является ли пользователь аутентификации на стороне сервера с помощью

req.isAuthenticated() 

Зов это значение в вашей стороне сервера код и передать результат на ваш взгляд, или на стороне клиента код каким-либо другим способом, при необходимости, отдельный аякс-вызов на сервер. Это происходит из PassportJS

Найдено в этом ответе: Documentation for "ensureAuthentication" "isAuthenticated" passport's functions?

+0

После того, как я могу сказать, если пользователь проходит проверку подлинности на стороне клиента, что было бы хорошим решением для изменения внешнего вида? – user2066880

1

Ваши seriliazeUser и deserializeUser функции выглядят нормально.

Насколько я помню, есть какой-то код в среднем стеке, который устанавливает window.user после аутентификации пользователя и есть также Global обслуживания на угловой стороне, которая использует эту информацию, чтобы установить authenticated значения. Вы можете использовать эту информацию для изменения своего вида.

Посмотрите на код контроллера Header.

https://github.com/linnovate/mean/blob/master/public/js/controllers/header.js

Смежные вопросы