コード例 #1
0
 public MemberDetailsPage(Model.Response.MemberLL member)
 {
     InitializeComponent();
     BindingContext = model = new MemberDetailsViewModel()
     {
         Member = member
     };
 }
        protected override async Task <AuthenticateResult> HandleAuthenticateAsync()
        {
            if (!Request.Headers.ContainsKey("Authorization"))
            {
                return(AuthenticateResult.Fail("Missing authorization header!"));
            }

            try
            {
                var authHeader      = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
                var credentialBytes = Convert.FromBase64String(authHeader.Parameter);
                var credentials     = Encoding.UTF8.GetString(credentialBytes).Split(':');
                var username        = credentials[0];
                var password        = credentials[1];
                LoggedMember = await _memberService.Login(username, password);
            }
            catch (Exception ex)
            {
                return(AuthenticateResult.Fail("Invalid Authorization Header!"));
            }
            if (LoggedMember == null)
            {
                return(AuthenticateResult.Fail("Invalid Username or Password"));
            }

            var claims = new List <Claim>
            {
                new Claim(ClaimTypes.NameIdentifier, LoggedMember.Username),
                new Claim(ClaimTypes.Name, LoggedMember.FirstName),
                new Claim(ClaimTypes.Role, LoggedMember.Role.Name)
                //new Claim(ClaimTypes.Locality, member.LocalCommittee.Name),
                //new Claim("FunctionalField",member.FunctionalField.Name)
            };
            var identity  = new ClaimsIdentity(claims, Scheme.Name);
            var principal = new ClaimsPrincipal(identity);
            var ticket    = new AuthenticationTicket(principal, Scheme.Name);

            return(AuthenticateResult.Success(ticket));
        }