Code: UserID von ASP Server Identity ermitteln in Angular
Client über API
Der folgende Code zeigt, wie man die eigene UserID als GUID
von einem Asp Webserver in einer SPA Client Anwendung ermitteln kann, um Daten auszuwerten.
Angular, Typescript,
Asp Core .Net5 Web API, Microsoft ASP Server Identity
UserID von Identity-Server abfragen aus Angular App, SPA
Frontend in Asp Core .Net5
load_userID() {
//--------< load_userID() >--------
//*load own userid as guid and check if the article is own, owner
this.dataService.get_UserIdGuid().subscribe(response => {
//console.log("get_UserIdGuid()=" + response);
//console.log("article=" + JSON.stringify(this.article));
this.iduserguid = response;
if(this.article.iduserguid==this.iduserguid){
this.isOwner=true;
}
else {
this.isOwner=false;
}
}
);
//--------</ load_userID() >--------
}
|
API Request
Im Angular
component service (hier article.service.ts)
Wird dann mit http ein API Request an den ASP Core API
Server gesendet.
Dieser gibt den MS Identity User als GUID in Json Format
zurück. Hier in Angular/Typescript Observable und httpClient
useridguid: "1428ca0b-186c-43c8-8ec6-08d26e97e83b"
get_UserIdGuid(): Observable<string> {
//----< get_UserIdGuid >----
//useridguid: "1428ca0b-186c-43c8-8ec6-08d26e97e83b"
return this.http
.get<{useridguid}>(this.url_Api_Base + "get_UserIdGuid" )
.pipe(
map(({useridguid})=>{
return useridguid
}
)
)
//----</ get_UserIdGuid >----
}
|
Im Asp Core Server ist eine API Methode hinterlegt, welche
einen Eingeloggten User als GUID zurück geben kann
// GET:
api/getuserid/5 ============👁
//
EventsController
[Authorize]
[Route("get_UserIdGuid")]
[HttpGet("get_UserIdGuid")]
public async Task<ActionResult<string>> get_UserIdGuid()
{
//-------------< Liste: GetArticles
>-------------
//--< Get User ID >--
//internal referenz-Number for tracking
in tables
String sIDUserGuid =
User.getUserIdGuid(); //*ID in aspUsers wie:
1428ca0b-186c..
if (sIDUserGuid == "") return BadRequest();
//--</ Get User ID >--
return new JsonResult(new { useridguid= sIDUserGuid });
//-------------</
Liste: GetArticles >-------------
}
|
Hierzu muss man auf dem ASP Server eine static Methode
hinterlegen, welche die Identity User Claims auslesen kann
//< Using >
using System.Security.Claims;
//</ Using >
public static class UserInfo_Methods
{
//-------------<
Class: ExtensionMethods >-------------
public static string getUserIdGuid(this ClaimsPrincipal user)
{
//------------<
getUserId(User) >------------
//*returns
the current UserID
if
(!user.Identity.IsAuthenticated)
return null;
ClaimsPrincipal currentUser = user;
//<
output >
return
currentUser.FindFirst(ClaimTypes.NameIdentifier).Value;
//</ output >
//------------</
getUserId(User) >------------
}
|