我正在使用带有AuthFeature的MVC.Net和servicestack
Plugins.Add(new AuthFeature(() => new AuthUserSession(),
new IAuthProvider[]
{
new CredentialsAuthProvider()
})
{ IncludeRegistrationService = true });
我想在执行操作方法之前做一个MVC.NET过滤器或属性来进行一些验证和重定向,但是我需要用户会话来完成它。
public class UserConfirmationAttribute : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
//Get service stack user session
}
}
在服务或控制器中很容易获得会话,只需使用SessionAs<AuthUserSession>()
。如何在MVC.Net属性中获得服务堆栈用户会话?
答案 0 :(得分:1)
如果您的FilterAttribute用于继承自ServiceStackController
的MVC控制器上的操作,您可以通过以下方式解析它:
var ssController = filterContext.Controller as ServiceStackController;
var session = ssController.ServiceStackProvider.SessionAs<AuthUserSession>();
否则,您可以通过以下方式从新的ServiceStackProvider
实例获取会话:
var ssProvider = new ServiceStackProvider(filterContext.HttpContext.ToRequest());
var session = ssProvider.SessionAs<AuthUserSession>();