我尝试使用ServiceStack.Razor
创建完整的网络应用。
但是如何处理服务和页面中的身份验证会遇到问题。
/auth?username=&password
验证成功,并成功访问受保护的服务。
但如何处理未经授权的服务访问。目前它返回401未经授权的访问。所以当用户访问页面时它只显示空白页面..我试图设置customhttphandler进行未经授权的访问,重定向到登录页面但不成功
SetConfig(new EndpointHostConfig {
DebugMode = true,
CustomHttpHandlers = {
{ HttpStatusCode.NotFound, new RazorHandler("/notfound") },
{ HttpStatusCode.Unauthorized, new RazorHandler("/login") },
}
});
Servicestack.razor
允许像Asp.Net WebPages一样创建Razor页面,但没有示例如何使用Request.IsAuthenticated
来处理页面中的授权。我试过了,但抛出方法不存在错误。
以及如何注销或销毁身份验证会话
更新:我正在使用ServiceStack.Razor
与SelfHosting
答案 0 :(得分:3)
在ServiceStack Self Host场景中,我能够像这样访问Razor视图中的会话:
@{
var user = Request.GetSession();
}
Authenticated: @user.IsAuthenticated
答案 1 :(得分:2)
必须回答我的自我..因为没有人来回答,这将是其他人的参考..
具有授权属性的服务现在重定向到login page,而现在返回黑页。请更新最新的servicestack发布。
尝试了很多在剃刀页面上处理身份验证的可能性之后,可以通过访问razor页面中的缓存来实现。
@{
var user = Cache.Get<AuthUserSession>(SessionKey);
}
@if (user != null && user.IsAuthenticated) {
<h1>User @user.DisplayName is Logged</h1>
}
但有限制,这只适用于Asp.Net WebHost。我仍然找到了让它在Self Host中工作的方法。
对于注销过程,可以通过创建注销服务来实现,删除会话并重定向到登录页面。
[Route("logout")]
public class Logout { }
public class UserService : Service
{
public object Any (Logout r)
{
this.RemoveSession();
return this.Redirect("/login");
}
}
我将尝试使用它制作示例项目并尽快发布