Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

Code: UserID von ASP Server Identity ermitteln in Angular Client über API

09.04.2021 (👁1530)

Code Example:

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) >------------

    }