asp.net-mvc-4 - WEBAPI ActionContext Request.Properties.Add 用于存储敏感信息

标签 asp.net-mvc-4 asp.net-web-api

我想将信息从 Action 过滤器(数据库)传递到 Action 函数。

使用 ActionContext Request.Properties.Add 存储数据是否安全?

信息是否有可能被 WEBAPI 客户端或它的安全看到,因为它可以安全地将信息存储在 Cache\Session 中?

这是更好的方法吗?

最佳答案

除非您显式序列化它们,否则客户端不会看到请求属性。它们完全保留在服务器端。

要在这里回答您的后续问题,还有另外两种方法可以做到。本身没有“最佳”方式。这完全取决于您希望信息流动的程度,以及您希望过滤器的通用程度。我的个人偏好是使用 Controller 对象,但这只是一个偏好。

这里的示例是一个简单的值 Controller 和一个 POCO 类:

[MyActionfilter]
public class ValuesController : ApiController
{
    public string Foo { get; set; }

    public User Get(User user)
    {
        if (Foo != null && user != null)
        {
            user.FamilyName = Foo;
        }

        return user;
    }
}


public class User
{
    public string FirstName { get; set; }
    public string FamilyName { get; set; }
}

下面的 Action 过滤器天真地实现了对 Controller 对象或方法参数的访问。请注意,您可以谨慎地应用过滤器或进行类型检查/字典检查。
public class MyActionfilter : ActionFilterAttribute
{
    public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        controller = actionContext.ControllerContext.Controller;

        // Not safe unless applied only to controllers deriving
        // from ValuesController
        ((ValuesController)controller).Foo = "From filter";

        // Not safe unless you know the user is on the signature
        // of the action method.
        actionContext.ActionArguments["user"] = new User()
        {
            FirstName = "From filter"
        };
    }
}

关于asp.net-mvc-4 - WEBAPI ActionContext Request.Properties.Add 用于存储敏感信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23325735/

相关文章:

javascript - ASP MVC 集合编辑

asp.net-mvc-4 - 简单成员资格 :Last Login date of User

asp.net - ScriptBundle 在 Debug模式下添加完整文件和缩小文件

asp.net - 如何在 asp.net web api 中过滤本地请求?

jquery - 本地化不适用于 mvc4 应用程序中的按钮

asp.net-mvc-4 - 从 MVC4 中的 View 调用另一个项目的 Controller

jquery - Web API OWIN 从 $.AJAX POST withCredentials :true 接收空数据

java - 本地C# API、android Studio程序

javascript - AngularJs 是空列表

asp.net - Autofac 实例注册的 SingleInstance() 是否能在 IIS AppDomain 回收中幸存下来?