mythz(ServiceStack dev)によって提案されているように、認証用のグローバルリクエストフィルターがあります。このSO Answer
私のフィルター:
RequestFilters.Add((httpReq, httpResp, requestDto) =>
{
if (!PublicRoutes.Contains(httpReq.PathInfo))
{
new AuthenticateAttribute().Execute(httpReq, httpResp, requestDto);
}
});
動的ViewPageを継承するServiceStackRazorページをリクエストすると、フィルターが起動しません
例/Default.cshtml:
@inherits ViewPage
<!DOCTYPE html>
<html>
<head>
<title>HOME</title>
...
...
ETC
答えの一番下にあるコメントの中で、質問の提起者は同様の行動を示唆していますが、再現方法を正確に説明していないため、解決策を見つけることができません。
解決策はありますか?私は何か間違ったことをしましたか?
アップデート
ページで属性を直接宣言できることを発見しました。
@using ServiceStack.ServiceInterface
@inherits ViewPage
@{
new AuthenticateAttribute().Execute(Request, Response, this);
}
<!DOCTYPE html>
...
...
ETC
または、ViewPageを継承するクラスを作成し、それらをInitメソッドで実行して、Razorページで新しいクラスを使用できると確信しています。
ただし、これらのソリューションはどちらも無関係で、あまり乾燥していないように見えます。