我知道有多種方式來處理服務認證/授權,但我無法使其適用於靜態文件。ServiceStack - 防止對靜態文件的未經授權的訪問
有沒有一種方法將行爲配置爲與服務相同;如果未通過身份驗證,則對index.html的請求應重定向至登錄頁面,與請求保護dto /服務相同。
我目前正在研究RawHttpHandlers,但由於它在管道中還爲時過早我如何獲得apphost配置中的身份驗證設置?
在此先感謝 Gjergji
我知道有多種方式來處理服務認證/授權,但我無法使其適用於靜態文件。ServiceStack - 防止對靜態文件的未經授權的訪問
有沒有一種方法將行爲配置爲與服務相同;如果未通過身份驗證,則對index.html的請求應重定向至登錄頁面,與請求保護dto /服務相同。
我目前正在研究RawHttpHandlers,但由於它在管道中還爲時過早我如何獲得apphost配置中的身份驗證設置?
在此先感謝 Gjergji
你將不得不使用IAppHost.RawHttpHandlers
,因爲這是在ServiceStack's Request Pipeline訪問內置的靜態文件處理之前被執行的唯一的自定義處理程序。
但是你應該仍然能夠訪問用戶會話與可用擴展方法,如:
this.RawHttpHandlers.Add(httpReq =>
{
var isStaticFileRequest = httpReq.PathInfo.StartsWith("/static");
if (isStaticFileRequest)
{
var session = httpReq.GetSession();
if (!session.HasRole("TheRole"))
return new ForbiddenHttpHandler();
}
return null;
});
這個處理器簡單地檢查,如果它是一個靜態文件的請求,在這種情況下,路徑信息開始與/static
,如果是檢查用戶會話,如果他們具有所需的角色,如果不是,它會返回一個禁止請求,否則返回null
告訴ServiceStack繼續執行請求。
注:如果它需要你可以訪問任何註冊的依賴性和ServiceStack之外與HostContext.Resolve,e.g:
var authRepo = HostContext.Resolve<IAuthRepository>();