ho sovrascritto il CredentialsAuthProvider in questo modo:Come faccio a reindirizzare dopo l'autenticazione in ServiceStack
public override bool TryAuthenticate(IServiceBase authService, string userName, string password)
{
//TODO: Auth the user and return if valid login
return true;
}
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo)
{
base.OnAuthenticated(authService, session, tokens, authInfo);
//User has been authenticated
//Find the user's role form the DB
if (roleA)
//GOTO mypage1
if (roleB)
//GOTO mypage2
}
ho eseguire un semplice post in ~/auth/poteri e mentre le opere di autenticazione e il metodo OnAuthenticated è chiamato, come faccio a reindirizzare l'utente alla pagina appropriata in base a un ruolo o qualcosa di simile?
mi stanco di fare quanto segue nel metodo OnAuthenticated, ma non ha avuto l'effetto desiderato:
authService ("/ views/clienti");.
aggiornamenti tramite Starter Template (vedi commento qui sotto):
public class CustomCredentialsAuthProvider : CredentialsAuthProvider
{
public override bool TryAuthenticate(IServiceBase authService, string userName, string password)
{
return true;
}
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo)
{
session.ReferrerUrl = "http://www.msn.com";
base.OnAuthenticated(authService, session, tokens, authInfo);
}
}
E la forma di POST:
<form method="POST" action="/auth/credentials">
<input name="UserName"/>
<input name="Password" type="password"/>
<input type="submit"/>
</form>
Questo ha funzionato ... una specie di ... ecco il comportamento: devo inviare il modulo due volte. Ecco la mia configurazione: ho una pagina di contenuto default.cshtml nella radice in cui si trova il modulo di login. Guardando il violinista, l'unica differenza che posso vedere è che, la prima volta che carico la pagina, non ho un cookie ss-id. Una volta inviato il modulo, il server mi rimanda a default.cshtml. Ma questa volta con un SSI. Se invio questa seconda volta, il reindirizzamento che hai descritto funziona. Cosa significa ss-id? – legion
Un'altra nota, ottengo ss-pid e ho Plugins.Add (new SessionFeature()); in AppHost. – legion
Il 'ss-id' è descritto nella [pagina Wiki della sessione di ServiceStack] (https://github.com/ServiceStack/ServiceStack/wiki/Sessions) – mythz