У меня есть клиентское приложение AngularJS
, которое использует javascript
(не coffeescript или typescript) Oauth2 для проверки подлинности в приложении WebAPI 2
с использованием последней Identity 2
. Все программное обеспечение в моем приложении является самым последним и основано на this example
. Мои целевые клиенты браузера - IE9 и выше.
Обратите внимание, что я сделал некоторые незначительные изменения из приведенного выше примера, поскольку я не перенаправляю все данные, отправленные на сервер, используя преобразование. Вместо этого я urlencode только в методе проверки подлинности ниже:
user.authenticate = function (userName, password, rememberMe, successCallback, errorCallback) {
var config = {
method: 'POST',
url: '/Token',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
data: 'grant_type=password&username=' + encodeURIComponent(userName) + '&password=' + encodeURIComponent(password),
};
Я разрабатываю VS2013 Update 2 и на сервере, я использую С#, последнюю Entity Framework и SQL Server 2012.
Для входа в систему мой клиент вызывает метод /Token в WebAPI и передает идентификатор пользователя и пароль. Затем WebAPI отвечает на токен клиенту, который я храню. С каждым запросом к WebAPI токен отправляется обратно и аутентифицируется:
$http.defaults.headers.common.Authorization = 'Bearer ' + user.data.bearerToken;
Это работает очень хорошо до сих пор, но, поскольку оно стоит, приложение не может сказать разницу между пользователями, которым назначены разные роли.
Некоторые из методов WebAPI могут выполняться только пользователями, которые имеют определенную роль. Я хотел бы настроить меню моего внешнего приложения AngularJS, чтобы только в том случае, если у пользователя есть эта роль, тогда соответствующие ссылки появятся видимыми. Я понимаю, что это не помешает пользователю проверять HTML и публикацию, но меня это не беспокоит, так как у меня все еще будет украшение методов, чтобы ограничить способность пользователей не выполнять роли.
Может ли кто-нибудь дать мне пример того, как я могу это сделать, используя только набор продуктов, упомянутых выше, которые я упоминаю в вопросе плюс JavaScript-токены, если они помогают обновить решение, Из того, что я понимаю, роли обрабатываются заявлениями, но я не понимаю, как их добавить и отправить их клиенту с помощью токенов. Я провел много исследований в Интернете, но мне не удалось найти хороших примеров, так как я думаю, что большинство из них очень новы, и не так много людей имели возможность изучить, как СПА может использовать это самое последнее программное обеспечение компоненты.
При ответе на этот вопрос обратите внимание на, что я не ищу ответа, который может сообщать сообществу, как настраивать роли на сервере или отвечать на них, объясняя, насколько важно предоставлять роль проверки на сервере. Я думаю, что почти все знают об этом. То, что я действительно считаю полезным, - это очень подробные технические рекомендации с примером кода и объяснением. Чтобы сфокусировать ответ, он, вероятно, будет полезен всем, если ответы, которые не отвечают этой потребности, не публикуются в качестве предлагаемых ответов.
Спасибо заранее.