c# - 在页面上进行任何事件之前,如何检查 MVC 中的 session 变量是否存在?

标签 c# asp.net-mvc session

我有这样一个场景:

搜索控件,我们的数据录入人员在其中输入用户 ID 并搜索他们的详细信息,并浏览与该用户相关的不同页面。

所以现在在我的 MVC 应用程序中,我正在设置一个 session 来维护 session 变量中的用户 ID。在页面上的每个方法(如编辑、更新等)上,我都在检查用户 session 是否存在。我可以在全局范围内这样做,这样我就不需要每次都检查了吗?就像在 global.asax 中一样

protected void Application_Start()
{
}

或编写自定义方法来检查 session 。

请有人能帮我解决这个问题。

谢谢

最佳答案

在 MVC 应用程序中,您可以创建自己的继承自 AuthorizeAttribute 的属性, 然后在该属性中您可以检查您的 session 。你可以把它放在需要的 Controller 上,或者放在 GlobalFilters 集合中。

更新1

下面是这种逻辑的一个例子

public class SessionAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        return httpContext.Session["InsuredKey"] != null;
    }

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        filterContext.Result = new RedirectResult("/some/error");
    }
}

然后你可以把它放在需要的 Controller 下,比如

[SessionAuthorize]
public class SomeController
{
}

关于c# - 在页面上进行任何事件之前,如何检查 MVC 中的 session 变量是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20787797/

相关文章:

c# - LINQ To SQL、C#、MVC 4、模型助手中的连接问题

javascript - 如何检查两个javascript变量是否不同?

c# - 将 DataTable 转换为只有值的 JSON

c# - 处理图像 : Parameter is not valid

c# - 闭包——捕获变量和将它们作为参数读取之间的区别

c# - 空合并运算符不接受不同类型

php - Laravel 5.2 - session 不保存

java - struts2中如何动态获取session对象

ruby-on-rails - 如何在 rails/rack 应用程序上与 node.js 实例共享身份验证?

C# - 检查给定的 url 是文件还是目录?