This can be achieved with the MemberManager & MemberSigninManager
Quite simply, in v13:
using Umbraco.Cms.Core.Security;
using Umbraco.Cms.Web.Common.Security;
public class TokenAuthenticationService : ITokenAuthenticationService
{
private readonly IMemberSignInManager _memberSignInManager;
private readonly IMemberManager _memberManager;
public static string CookieKey = "l_token";
public TokenAuthenticationService(
IMemberSignInManager memberSignInManager,
IMemberManager memberManager)
{
_memberSignInManager = memberSignInManager;
_memberManager = memberManager;
}
public async Task<bool> ProcessTokenAuthenticationAsync(HttpRequest request, HttpResponse response)
{
//get the memeber
var memberIdentityUser = await _memberManager.FindByEmailAsync({ member_email});
if (memberIdentityUser != null)
{
//sign in the member
var signInTask = _memberSignInManager.SignInAsync(memberIdentityUser, true);
await signInTask;
if (signInTask.IsCompletedSuccessfully)
{
//horay!
}
}
}
}
It can get a bit annoying using an async method, but other than that, it’s not too bad