我将 ServiceStack 与 Razor2 一起使用。
我用 装饰了我的一项服务RequiredRole("Admin")
。我现在想要发生的是,如果我来自浏览器 (Accept=text/html),如果我没有所需的角色,我想获得 HTML 重定向。相反,我只得到一个403 Invalid Role
,浏览器只显示一个通用错误。
有没有办法实现我所追求的?我可以从源头上RequiredRoleAttribute
看到它似乎不允许重定向。
public override void Execute(IHttpRequest req, IHttpResponse res, object requestDto)
{
base.Execute(req, res, requestDto); //first check if session is authenticated
if (res.IsClosed) return; //AuthenticateAttribute already closed the request (ie auth failed)
var session = req.GetSession();
if (HasAllRoles(req, session)) return;
res.StatusCode = (int)HttpStatusCode.Forbidden;
res.StatusDescription = "Invalid Role";
res.EndServiceStackRequest();
}