2013-10-26 3 views
1

Я создаю приложение, используя backbone.js и web api. Клиент JS отправит запросы ajax для доступа к api. Построение API довольно просто, но я хочу реализовать аутентификацию и авторизацию для API.API авторизации на основе токенов

Я планирую вернуть токен после успешной аутентификации и использовать этот токен для дальнейших запросов. Этот токен будет передан в заголовках HTTP-авторизации. Мои требования ниже 1) Проверяйте токен на каждый запрос и получаете идентификатор пользователя. 2) Использовать выбранный идентификатор пользователя для дальнейших действий.

Первый бит может обрабатываться с использованием фильтра пользовательских действий, где постоянный токен может быть проверен в отношении базы данных. Но я не могу найти какой-либо образец или пример для выполнения второго бит. Я хочу получить идентификатор пользователя из пройденного токена и перенести его для последующей обработки. Есть ли способ сделать это?

Ожидание предложений или идей. Любой образец кода действительно поможет. Заранее спасибо.

+0

вы можете посмотреть мой ответ здесь http://stackoverflow.com/questions/19269543/asp-net-web-api-for-user-authentication/19288696 – Rolfvm

ответ

0

Я настоятельно рекомендую использовать OAuth. В любом случае вы можете установить токен и информацию о пользователе в сеансе и использовать их в последующих вызовах. то есть, если сеанс активен и информация пользователя существует, используйте их в противном случае для авторизации и аутентификации пользователя (возможно, через OAuth), и если он действителен, сохраните их в сеансе, который будет использоваться в последующих вызовах.

+6

Почему он должен использовать OAuth и как это соотносится на этот вопрос? Просто отбросьте такое имя без каких-либо дальнейших причин, почему действительно никому не помогает. –

1

Вы можете установить Thread.CurrentPrincipal после успешного токена проверки, как это:

IPrincipal principal = new GenericPrincipal(new GenericIdentity(username), null); 

Thread.CurrentPrincipal = principal; 
// if we're running in IIS... 
if (HttpContext.Current != null) 
    HttpContext.Current.User = principal; 

Принципиальное также может быть экземпляром пользовательского класса, реализующего интерфейс System.Security.Principal.IPrincipal (для того, чтобы иметь возможность иметь свой идентификатор пользователя, связанный) ,

Я также предлагаю вам использовать фильтр DelegatingHandler вместо фильтра действий для проверки маркера, чтобы установить текущий директор как можно раньше во время жизненного цикла сообщения. Кроме того, таким образом вам не нужно украшать каждый метод/контроллер действия атрибутом фильтра действий.

+0

: спасибо ... Я попробую это на http: //stackoverflow.com/questions/1064271/asp-net-mvc-set-custom-iidentity-or-iprincipal .... – prashant

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