gpt4 book ai didi

asp.net-mvc-3 - 是否可以仅在 ASP.NET MVC 中为经过身份验证的用户启用 session 状态?

转载 作者:行者123 更新时间:2023-12-01 23:18:36 25 4
gpt4 key购买 nike

MVC3 添加了使用 [SessionState(SessionStateBehavior.Disabled)] 属性制作无 session Controller 的好机会。这很好但不灵活,因为您不能为每个 Controller 方法设置 session 状态,也不能按条件启用它。

是否可以仅为经过身份验证的用户启用 session 状态或通过其他一些自定义条件启用 session 状态?IE。 PHP 有一个很棒的特性。if (!isset($_SESSION)) session_start();能找到类似的东西就好了

最佳答案

您可以覆盖默认 Controller 工厂,更具体地说是 GetControllerSessionBehavior方法:

public class MyControllerFactory : DefaultControllerFactory
{
protected override SessionStateBehavior GetControllerSessionBehavior(RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
{
return SessionStateBehavior.Default;
}

if (requestContext.HttpContext.User.Identity.IsAuthenticated)
{
// enable session if there's an authenticated user
return SessionStateBehavior.Required;
}

return SessionStateBehavior.Disabled;
}
}

并在 Application_Start 中将默认 Controller 工厂替换为自定义工厂:

ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());

关于asp.net-mvc-3 - 是否可以仅在 ASP.NET MVC 中为经过身份验证的用户启用 session 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10781677/

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