Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unhandled Rejection (Error): Could not load settings for 'WebPortal' - ASP.NET Core React

I create an ASP.NET Core 3 React project and I keep getting this error.

Unhandled Rejection (Error): Could not load settings for 'WebPortal'

GET https://localhost:44367/_configuration/WebPortal 401

Uncaught (in promise) Error: Could not load settings for 'WebPortal'

at AuthorizeService.ensureUserManagerInitialized (AuthorizeService.js:184)
at async AuthorizeService.getUser (AuthorizeService.js:24)
at async AuthorizeService.isAuthenticated (AuthorizeService.js:15)
at async Promise.all (index 0)
at async LoginMenu.populateState (LoginMenu.js:26)

Here is the error popped (AuthorizeService.js):

    async ensureUserManagerInitialized() {
        if (this.userManager !== undefined) {
            return;
        }

        let response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl);

        if (!response.ok) {
            throw new Error('Could not load settings for '${ApplicationName}');
        }

        let settings = await response.json();
        settings.automaticSilentRenew = true;
        settings.includeIdTokenInSilentRenew = true;
        settings.userStore = new WebStorageStateStore({
            prefix: ApplicationName
        });

        this.userManager = new UserManager(settings);
        this.userManager.events.addUserSignedOut(async () => {
            await this.userManager.removeUser();
            this.updateState(undefined);
        });
    }

My ApiAuthorizationConstants.js file:

    export const ApplicationName = 'WebPortal';
    export const QueryParameterNames = {
      ReturnUrl: 'returnUrl',
      Message: 'message'
    };
    export const LogoutActions = {
      LogoutCallback: 'logout-callback',
      Logout: 'logout',
      LoggedOut: 'logged-out'
    };
    export const LoginActions = {
      Login: 'login',
      LoginCallback: 'login-callback',
      LoginFailed: 'login-failed',
      Profile: 'profile',
      Register: 'register'
    };
    const prefix = '/authentication';
    export const ApplicationPaths = {
       DefaultLoginRedirectPath: '/',
       ApiAuthorizationClientConfigurationUrl: '/_configuration/${ApplicationName}',
       ApiAuthorizationPrefix: prefix,
       Login: '${prefix}/${LoginActions.Login}',
       LoginFailed: '${prefix}/${LoginActions.LoginFailed}',
       LoginCallback: '${prefix}/${LoginActions.LoginCallback}',
       Register: '${prefix}/${LoginActions.Register}',
       Profile: '${prefix}/${LoginActions.Profile}',
       LogOut: '${prefix}/${LogoutActions.Logout}',
       LoggedOut: '${prefix}/${LogoutActions.LoggedOut}',
       LogOutCallback: '${prefix}/${LogoutActions.LogoutCallback}',
       IdentityRegisterPath: '/Identity/Account/Register',
       IdentityManagePath: '/Identity/Account/Manage'
     };

In the console, I see:

Error console

Can anyone help me?

like image 436
shalitha senanayaka Avatar asked Sep 14 '25 05:09

shalitha senanayaka


1 Answers

According to @Woodz and @Jack comments, I investigate the problem and find out the issue. The issue is Home page required authorization.I'll post my solution in here and it may help for someone.

Reason for the Issue

In my Startup.cs class, I enabled authorization for all Controllers. See below code,

services.AddMvc(options => {

                //**************Add General Policy *********************
                //User need to be a Authorized system user to access pages except allowAnonymous annotation
                var generalPolicy = new AuthorizationPolicyBuilder()
                                           .RequireAuthenticatedUser()
                                           .Build();
                options.Filters.Add(new AuthorizeFilter(generalPolicy));
                options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());


            })

Solution

  • Change Authorization in OidcConfigurationController.cs (Add AllowAnonymous annotation).

    [AllowAnonymous]
    public class OidcConfigurationController : Controller
    {
        private readonly ILogger<OidcConfigurationController> _logger;
    
        public OidcConfigurationController(IClientRequestParametersProvider 
          clientRequestParametersProvider, ILogger<OidcConfigurationController> 
         logger)
        {
            ClientRequestParametersProvider = clientRequestParametersProvider;
            _logger = logger;
         }
    
        public IClientRequestParametersProvider ClientRequestParametersProvider 
          { get; }
    
        [HttpGet("_configuration/{clientId}")]
        public IActionResult GetClientRequestParameters([FromRoute]string clientId)
        {
            var parameters = 
                     ClientRequestParametersProvider.GetClientParameters(HttpContext, 
                     clientId);
            return Ok(parameters);
        }
    }
    
like image 61
shalitha senanayaka Avatar answered Sep 15 '25 20:09

shalitha senanayaka