Hey, having problems with the intended way to do SSR login...
I'm looking at this as a reference: https://appwrite.io/docs/products/auth/server-side-rendering#creating-sessions however I am using a .net back end (front end also, but thats not relevant here).
I create a singleton for my Admin Client in DI, and create the session client as a transient which will be instantiated each time as so (I've removed the project and key's, and this is a test project so no need for hiding them in secrets right now):
var adminClient = new Appwrite.Client()
.SetEndpoint("")
.SetProject("")
.SetKey("");
builder.Services.AddKeyedSingleton("admin", adminClient);
builder.Services.AddKeyedTransient("session", (provider, key) => new Appwrite.Client().SetEndpoint("").SetProject(""));
I've created an API endpoint, which currently isn't setting cookies as I haven't gotten that far, but thats to be done, as follows:
public static async Task<IResult> Login(LoginModel login, [FromKeyedServices("admin")] Appwrite.Client client)
{
var accountClient = new Account(client);
var result = await accountClient.CreateEmailPasswordSession(login.Email, login.Password);
return TypedResults.Ok();
}
This appears to match the docs I referenced above - using the admin client not the session client, and calling create email password session.
Everything works at first, but then any action I try and make after this call with the admin client will fail with the following error:
Appwrite.AppwriteException: API key and session used in the same request. Use either `setSession` or `setKey`. Learn about which authentication method to use in the SSR docs: https://appwrite.io/docs/products/auth/server-side-rendering
I never call setSession on the admin client, but it appears to be having its session set by calling CreateEmailPasswordSession?
Is this meant to be the case?
I could solve it be injecting the AdminClient everywhere as Transient rather than a singleton, but that's not the real solution I don't feel...
Recommended threads
- How to get current user account session ...
i am using sveltekit and i'm a bit unclear on how to get the current user's session from the server side. thisi s what i have so far // src/lib/server/appwrite...
- Realtime: Email Verification Not work
There are some issues with real-time updates. For email verification, updates triggered by the console will be checked, but real-time updates are not triggered ...
- OAuth2 Provider is disabled automaticall...
Hi everyone, I'm using self-host Appwrite 1.7.4. I can setup OAuth2 with Google successfully, however the provider is disabled automatically after one day witho...