gpt4 book ai didi

asp.net-mvc - MVC Controller 中的 ServiceStack session 始终为空

转载 作者:行者123 更新时间:2023-12-02 20:02:17 24 4
gpt4 key购买 nike

我正在使用服务堆栈 MVC powerpack 创建一个 ASP.NET MVC 4 应用程序,并利用服务堆栈的身份验证和 session 提供程序。我从社交引导 API 项目复制了很多逻辑。我的 Controller 继承自以下基本 Controller :

public class ControllerBase : ServiceStackController<CustomUserSession>

其实现为:

public class ControllerBase : ServiceStackController<CustomUserSession> {}

CustomUserSession 继承自 AuthUserSession:

public class CustomUserSession : AuthUserSession

登录后,我的 CustomUserSession OnAuthenticated() 方法运行,但是当我重定向回 Controller 时,UserSession 不运行已填充,例如

public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo)
{
base.OnAuthenticated(authService, session, tokens, authInfo);
CustomFoo = "SOMETHING CUSTOM";

// More stuff
}

public class MyController : ControllerBase
{
public ActionResult Index()
{
// After having authenticated
var isAuth = base.UserSession.IsAuthenticated; // This is always false
var myCustomFoo = base.UserSession.CustomFoo; // This is always null

}
}

有人能看到我在这里缺少什么吗?

最佳答案

请参阅 ServiceStack Google Group 内的问题 - https://groups.google.com/forum/?fromgroups=#!topic/servicestack/5JGjCudURFU

当从 MVC 中使用 JsonSeviceClient(或任何 serviceClient)进行身份验证时,cookie 不会与 MVC 请求/响应共享。

在 MVC Controller 内向 ServiceStack 进行身份验证时,应将 MVC HttpContext 发送到 ServiceStack。像下面这样的东西应该可以工作......

var authService = AppHostBase.Resolve<AuthService>();
authService.RequestContext = System.Web.HttpContext.Current.ToRequestContext();
var response = authService.Authenticate(new Auth
{
UserName = model.UserName,
Password = model.Password,
RememberMe = model.RememberMe
});

关于asp.net-mvc - MVC Controller 中的 ServiceStack session 始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14835267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com