Skip to main content
All docs
V25.1
  • .NET 8.0+
    • The page you are viewing does not exist in the .NET Framework 4.6.2+ platform documentation. This link will take you to the parent topic of the current section.

    SignInManager Class

    Exposes API required for user sign in. Use Dependency Injection to access this class’s instance in an application.

    Namespace: DevExpress.ExpressApp.Security

    Assembly: DevExpress.ExpressApp.Security.v25.1.dll

    NuGet Package: DevExpress.ExpressApp.Security

    Declaration

    public sealed class SignInManager

    Remarks

    The code sample below demonstrates how to use the SignInManager.AuthenticateByLogonParameters method to implement a Backend Web API Service controller for JSON Web Token (JWT)-based authentication. The XAF Solution Wizard generates equivalent code for Blazor projects with integrated Web API.

    File: MySolution.Blazor\API\Security\AuthenticationController.cs

    using DevExpress.ExpressApp.Security;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.IdentityModel.Tokens;
    using Swashbuckle.AspNetCore.Annotations;
    using System.IdentityModel.Tokens.Jwt;
    using System.Text;
    
    namespace MySolution.WebApi.Jwt;
    
    [ApiController]
    [Route("api/[controller]")]
    public class AuthenticationController : ControllerBase {
        readonly SignInManager signInManager;
        readonly IConfiguration configuration;
    
        public AuthenticationController(SignInManager signInManager, IConfiguration configuration) {
            this.signInManager = signInManager;
            this.configuration = configuration;
        }
    
        [HttpPost("Authenticate")]
        public IActionResult Authenticate(
            [FromBody]
                [SwaggerRequestBody(@"For example: <br /> { ""userName"": ""Sam"", ""password"": """" }")]
                AuthenticationStandardLogonParameters logonParameters
        ) {
            var authenticationResult = signInManager.AuthenticateByLogonParameters(logonParameters);
    
            if(authenticationResult.Succeeded) {
                var issuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["Authentication:Jwt:IssuerSigningKey"]!));
                var token = new JwtSecurityToken(
                    issuer: configuration["Authentication:Jwt:ValidIssuer"],
                    audience: configuration["Authentication:Jwt:ValidAudience"],
                    claims: authenticationResult.Principal.Claims,
                    expires: DateTime.Now.AddHours(2),
                    signingCredentials: new SigningCredentials(issuerSigningKey, SecurityAlgorithms.HmacSha256)
                    );
                return Ok(new JwtSecurityTokenHandler().WriteToken(token));
            }
            return Unauthorized("User name or password is incorrect.");
        }
    }
    

    Inheritance

    Object
    SignInManager
    See Also