2012-10-25 27 views
10

Temel kimlik doğrulamasını kullanacak bir ServiceStack API'si oluşturuyoruz. ServiceStack kimlik doğrulaması başarısız olduğunda, yönlendirmeyin mi?

var authDb = new OrmLiteConnectionFactory("Server=(...);", true, MySqlDialectProvider.Instance); 

var authRepo = new OrmLiteAuthRepository(authDb); 
authRepo.CreateMissingTables(); 
container.Register<ICacheClient>(c => new MemoryCacheClient()); 
container.Register<IUserAuthRepository>(c => authRepo); 

Plugins.Add(
    new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new BasicAuthProvider() }) 
); 

/Account/Login.aspx?ReturnUrl= için bir yönlendirme hiçbir Yetkilendirme üstbilgi veya yanlış kullanıcı adı + tepkisini geçmesi ile bir istek olduğunu yaparken şu şekildedir: Şu anda benim AppHost içinde kimlik doğrulama kurdum ...

Parital bir talebin örneği:

POST http://localhost:60278/reserve HTTP/1.1 

HTTP/1.1 302 Found 
Location: /Account/Login.aspx?ReturnUrl=%2freserve 
X-Powered-By: ServiceStack/3,924 Win32NT/.NET 

Yetkisiz veya HTTP 403 401 Yasak sadece bir HTTP ile yanıt yapmak için bir yolu var mı? Varsayılan ServiceStack en AuthFeature By

cevap

22

sadece varsayılan yönlendireceğiz çalışacaktır ~/login yolunu HTML Content-Type istekleri için. Sen null AuthFeature içinde yönlendirme yolunu ayarlayarak bu geçersiz kılabilirsiniz: Bu, diğer Content-Türleri almak standart 401 UnAuthorized Tepki geri düşecek

Plugins.Add(new AuthFeature(...) { HtmlRedirect = null }); 

.

küresel null HtmlRedirect ayarladıktan sonra, örneğin, bir anlık bazda yeniden eklemek için:

[Authenticate(HtmlRedirect="~/path/to/redirect/to")] 
+0

Beni burada kafa karıştırıcı bazı ASP.net şeyler olmalı bence. Bunu dokümanlar içinde gördüm ve HtmlRedirect = null'ı denedim ve ayrıca Accept/Content-type üstbilgileri için application/json kullanıyorum. Yönlendirme yazdığınızla aynı değildir (~/login), ancak /Account/Login.aspx. Global.aspx ve materyallerimi inceleyeceğim, bilmenizi isterim. Şimdi cevabınızı kabul ediyorum, ancak SS doğru kurulduğunda çözüm budur. Teşekkür ederim! :) – Magge

+0

Evet, bu benim kötüydü. Web.config dosyasında hala .net Üyelik şeyler vardı, SS kimlik doğrulaması geçersiz kılıyor gibi görünüyor. Kaldırdıktan sonra bir çekicilik gibi çalışır. – Magge

+0

Anladım! ... :) –