Я создаю новое приложение Angular2 и оно будет находиться внутри платформы приложений .NET. Приложение My Angular2 должно заставить текущего зарегистрированного пользователя сделать вызовы API для извлечения данных. Как я могу получить userId в моем приложении.Получение входа пользователя в приложение Angular 2 с платформы .NET
ответ
Поскольку вы явно не указали, какую платформу .NET вы используете, я собираюсь предположить, что это самый последний из них - Asp.Net Core с идентификатором Asp.Net как поставщик аутентификации.
Если вы используете шаблон Asp.Net Identity по умолчанию, вы можете просто использовать аутентификацию на основе файлов cookie для своих запросов веб-api. Куки-файлы автоматически передаются вашим браузером на сервер при выполнении вызовов через услугу Angular 2s http
, поэтому вам не нужно указывать там что-либо явно.
Вот некоторый минимальный код, который может делать то, что вы хотите:
Вход метод в вашей стороне контроллера сервера
[HttpPost("Login")]
public async Task<IActionResult> Login([FromBody] LoginPost model)
{
if (ModelState.IsValid)
{
// Require the user to have a confirmed email before they can log on.
var user = await _userManager.FindByEmailAsync(model.Email);
if (user != null)
{
var result = await _signInManager.PasswordSignInAsync(user, model.Password, model.StayLoggedIn, lockoutOnFailure: false);
if (result.Succeeded)
{
return Ok();
}
}
}
return BadRequest();
}
Угловая метод 2 сервис, чтобы выполнить Войти
Это вызывается из вашего компонент входа, например компонент, на котором размещена ваша форма входа.
public login(email: string, password: string, stayLoggedIn: boolean): Promise<boolean> {
var url = '/Api/Account/Login';
var loginCredentials = {
email: email,
password: password,
stayLoggedIn: stayLoggedIn
};
return this.http
.post(url, loginCredentials)
.toPromise()
.then(response => {
return response.ok;
})
.catch(() => {
return false;
});
}
После успешного входа в систему, _signInManager.PasswordSignInAsync()
установит печенье на клиенте, который автоматически проверяется в рамках дальнейших запросов.
Данные пользователя стороне метод сервера
[HttpGet("Auth")]
public async Task<IActionResult> Auth()
{
var model = new AuthGet();
if (!User.Identity.IsAuthenticated)
{
model.IsAuthenticated = false;
return Ok(model);
}
var user = await _userManager.GetUserAsync(User);
var roles = await _userManager.GetRolesAsync(user);
model.Username = user.UserName;
model.IsAuthenticated = true;
model.Id = user.Id;
model.Email = user.Email;
model.Roles = roles;
return Ok(model);
}
Это просто какой-то код на стороне сервера, который возвращает основную информацию о вошедшего в систему пользователя
Создание этой информации, доступной в стороне клиента код
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Http } from '@angular/http';
import { Auth } from '../Models/Account/auth';
@Injectable()
export class AuthService {
private authSource = new BehaviorSubject<Auth>(new Auth);
public auth = this.authSource.asObservable();
constructor(private http: Http) {
this.updateAuth();
}
public updateAuth() {
var url = '/Api/Account/Auth';
this.http
.get(url)
.toPromise()
.then(response => {
var auth = response.json() as Auth;
this.authSource.next(auth);
});
}
}
AuthService
теперь предлагает Observable
, на который вы можете подписаться в своих компонентах, например например, как это:
private auth: Auth;
private authSubscription: Subscription;
ngOnInit() {
this.updateProfileOverview();
this.authSubscription = this.authService.auth.subscribe(newAuth => {
this.auth = newAuth;
// React to the new auth value
});
}
Получение UserId на сервере боковых контроллеров
Теперь, когда запросы быть автоматически заверены в рамках, вы можете использовать Asp.Net удостоверений UserManager
путем введения его в вашем контроллер и использовать его, чтобы получить идентификатор пользователя, как это:
namespace App.Controllers
{
public class DataController : Controller
{
public NotesController(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
private readonly UserManager<ApplicationUser> _userManager;
public async Task<IActionResult> CreateNote()
{
var userId = _userManager.GetUserId(User);
// Use it...
}
}
}
Свойства User
присутствует на все классы, производные от базового класса Controller
.
Большое спасибо за всю информацию. Но здесь вы приняли компонент входа из приложения Angular 2. В моем случае приложение Angular2 не будет иметь компонент входа. Он будет размещен как дочернее приложение внутри платформы. Когда пользователь входит в систему на платформе, он должен иметь возможность видеть пункт меню как приложение Angular2. И как только я нажимаю на это, мое фактическое приложение Angular2 загружается.Итак, чтобы загрузить мое приложение Angular2, мне нужно получить доступ к API-интерфейсам REST, имеющим аутентификацию. Поэтому я должен иметь возможность получить идентификатор пользователя, который используется на уровне платформы. – indra257
Это приложение Angular 2 делает запросы api на тот же бэкэнд, который также служит основной/родительской стороне? Если да, и если вы используете аутентификацию на основе cookie на основе Asp.Net Identity, вам не нужно выполнять какую-либо аутентификацию в приложении Angular 2 вообще. Было бы здорово, если бы вы могли добавить несколько подробностей о вашей настройке к исходному вопросу. – GeorgDangl
Да, он использует одни и те же запросы api. Приступая к первоначальному вопросу, в моем приложении angular2 мне нужно передать Auth-id (идентификатор пользователя) для извлечения данных. Итак, как мне получить идентификатор пользователя, который использовался для входа на уровне платформы. – indra257
- 1. Вставить приложение Angular 2 в другое приложение Angular 2
- 2. Получение имени пользователя после входа в Visual Basic .net
- 3. Как перезагрузить приложение Angular 2 после выхода пользователя из системы
- 4. Включите приложение Angular 2 в мобильное приложение
- 5. авторизация и контроль входа в приложение Angular
- 6. .Net Core Angular 2 JQuery
- 7. Получение текущего входа в систему Пользователь с другого сеанса пользователя
- 8. Firebase Angular 2 получение данных из таблицы пользователя
- 9. Приложение примера платформы Intuit для .NET.
- 10. Что такое .NET Core в Angular 2
- 11. Как упаковать приложение Angular 2?
- 12. C# .Net Приложение Windows - Получение имени пользователя в My NT
- 13. Получение пользователя для входа в файл C++
- 14. Как создать настольное приложение с помощью Angular 2
- 15. Получение данных из FileReader в Angular 2
- 16. Какова основная цель модуля платформы-сервера в Angular 2?
- 17. Получение пользователя Facebook в Asp .Net
- 18. Получение идентификатора пользователя после входа в OAuth
- 19. Отправка формы в приложение Angular 2
- 20. Получение идентификатора пользователя для входа в систему
- 21. Приложение в Angular 2 застряло Загрузка
- 22. Вставить Instagram (oembed) в приложение Angular 2
- 23. Загрузочное приложение в Angular 2 RC 5
- 24. .NET Core и Angular 2 Work Flow
- 25. получение ошибки зависимости угловой 2 Приложение
- 26. Как сохранить пользователя для входа в приложение?
- 27. Понимание будущего платформы .NET
- 28. ASP .Net Core + Angular 2 routing
- 29. Получение идентификатора пользователя от входа в систему пользователя в FOSUserBundle
- 30. Встроенное приложение для рабочего стола Windows с использованием платформы .NET?
Сохраните пользователя после успешного входа в локальный ресурс. – JoeriShoeby
Да, но этот вход происходит на уровне платформы. – indra257
Итак, где вы его сохраняете, когда вы входите в систему? – JoeriShoeby