hi
Hi, we are receiving the error "Volo.Abp.Identity:InvalidToken": "Invalid token.", whenever an email confirmation link is clicked.
I can't see the error in the logs that you shared. Can you share these logs when you receive the error?
hi
Can you add this endpoint URL to your Yarp?
It does not start with api/chat
https://localhost:44325/signalr-hubs/chat/negotiate?negotiateVersion=1
hi
Configure<AbpAspNetCoreAuditingOptions>(options =>
{
options.IgnoredUrls.AddIfNotContains("/health");
});```
hi
Are there any error logs on the browser console or backend app?
hi
Add below code to XXX.Blazor.Server/wwwroot/blazor-global-styles.css
#components-reconnect-modal{
z-index: 1056 !important;
}
hi
What are the logs of the backend of the 400 bad request?
hi
Option A: Admin creates user under a specific tenancy (optionally with user changes password on login) User is emailed to say an account is created for them including their password.
You can easy to do this option.
Create a user under a specific tenant and mail to the email of the new user.
https://docs.abp.io/en/abp/latest/Multi-Tenancy#change-the-current-tenant https://docs.abp.io/en/abp/latest/Emailing
We added User must change password at next login feature on 7.2
hi
You can download the account pro source code.
abp get-source Volo.Account.Pro
https://support.abp.io/QA/Questions/632/How-can-I-download-the-source-code-of-the-framework-Angular-packages-theme-and-pro-modules
hi
Please try using CheckExpiresAt with AddCookie.
context.Services.AddAuthentication(options =>
{
//...
})
.AddCookie("Cookies", options =>
{
options.ExpireTimeSpan = TimeSpan.FromDays(365);
options.CheckExpiresAt();
})
.AddAbpOpenIdConnect("oidc", options =>
{
//...
});
using System;
using System.Globalization;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
namespace MyCompanyName.MyProjectName.Web;
public static class CookieAuthenticationOptionsExtensions
{
public static CookieAuthenticationOptions CheckExpiresAt(this CookieAuthenticationOptions options)
{
var originalHandler = options.Events.OnValidatePrincipal;
options.Events.OnValidatePrincipal = async principalContext =>
{
originalHandler?.Invoke(principalContext);
if (principalContext.Principal != null && principalContext.Principal.Identity != null && principalContext.Principal.Identity.IsAuthenticated)
{
var tokenExpiresAt = principalContext.Properties.Items[".Token.expires_at"];
if (tokenExpiresAt != null &&
DateTimeOffset.TryParseExact(tokenExpiresAt, "yyyy-MM-ddTHH:mm:ss.fffffffzzz", null, DateTimeStyles.AdjustToUniversal, out var expiresAt) &&
expiresAt < DateTimeOffset.UtcNow.Subtract(TimeSpan.FromMinutes(5)))
{
principalContext.RejectPrincipal();
await principalContext.HttpContext.SignOutAsync(principalContext.Scheme.Name);
}
}
};
return options;
}
}
hi
I will confirm this.