小编FMM*_*FMM的帖子

用于JSON POST的ASP.Net MVC CSRF预防

我想关闭通过AJAX发布原始JSON的CSRF漏洞.

我熟悉MVC使用ValidateAntiForgeryTokenAttribute和自动化CSRF预防的机制@Html.AntiForgeryToken(); 但是,如果我理解正确的话,这个机制需要POST与一个做Content-Typeapplication/x-www-form-urlencoded(或类似).有没有在ASP.Net MVC内置的机制,将拒绝CSRFs用于POST与请求Content-Typeapplication/json?如果没有,我是否坚持将防伪措施放入JSON对象本身?您是否可以推荐一种技术来保护来自CSRF漏洞的JSON POST请求,其安全性与ASP.Net MVC中内置的基于表单的方法相同?

c# asp.net-mvc csrf asp.net-mvc-3

16
推荐指数
1
解决办法
4492
查看次数

Ninject绑定用于接口的调度程序实现

我有一个界面:

public interface IService
{
    void DoStuff(int parm1, string parm2, Guid gimmeABreakItsAnExampleK);
}
Run Code Online (Sandbox Code Playgroud)

我想配置Ninject(v3)绑定,以便我可以有一个"调度程序"shuffle方法调用多个实例IService,如下所示:

public sealed class DispatcherService : IService
{
    private IEnumerable<IService> _children;

    public DispatcherService(IEnumerable<IService> children)
    {
        this._children = children.ToList();
    }

    public void DoStuff(int parm1, string parm2, Guid gimmeABreakItsAnExampleK)
    {
        foreach(var child in this._children)
        {
            child.DoStuff(parm1, parm2, gimmeABreakItsAnExampleK);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我看起来像这样的绑定最终会在运行时抛出异常,表明存在循环依赖:

this.Bind<IService>().To<DispatcherService>();

this.Bind<IService>().To<SomeOtherService>()
    .WhenInjectedExactlyInto<DispatcherService>();
this.Bind<IService>().To<YetAnotherService>()
    .WhenInjectedExactlyInto<DispatcherService>();
Run Code Online (Sandbox Code Playgroud)

这可能吗?如果是这样,我做错了什么?忍者可以逃脱这种周期性的依赖厄运吗?

.net c# dependency-injection ninject ioc-container

10
推荐指数
1
解决办法
567
查看次数

对于C#的事件,Scala中惯用的等价物是什么

在C#中,类和接口可以有event:

public class Foo
{
    public event Action SomethingHappened;

    public void DoSomething()
    {
        // yes, i'm aware of the potential NRE
        this.SomethingHappened();
    }
}
Run Code Online (Sandbox Code Playgroud)

这有助于以最少的样板代码进行基于推送的通知,并启用多用户模型,以便许多观察者可以监听事件:

var foo = new Foo();
foo.SomethingHappened += () => Console.WriteLine("Yay!");
foo.DoSomething();  // "Yay!" appears on console. 
Run Code Online (Sandbox Code Playgroud)

Scala中有相同的成语吗?我正在寻找的是:

  1. 最小的样板代码
  2. 单个发布者,多个订阅者
  3. 附加/分离订阅者

在Scala文档中使用它的例子非常棒.我不是在寻找Scala中C#事件的实现.相反,我正在寻找Scala中的等效成语.

c# scala

9
推荐指数
1
解决办法
660
查看次数

缓存中对象图的延迟加载部分的推荐模式

我在web应用程序后面使用memcache来最小化对SQL数据库的命中.我通过标记它们将C#对象存储到此缓存中SerializableAttribute.我们在应用程序中通过Ninject大量使用依赖注入.

其中一些对象很大,我想将它们分解.但是,它们来自单个存储过程调用(即一个存储过程调用被填充到完整的对象图中),并且我希望能够将这些对象分解并从缓存中单独延迟加载特定的子图而不是将整个对象图一次加载到内存中.

什么样的模式可以帮助我实现这一目标?

.net c# ninject-2

8
推荐指数
1
解决办法
1244
查看次数

Vim眼泪显示tmux窗格

我在Win10主机上运行Ubuntu虚拟机(通过vagrant),并且在其中一个窗格中tmux运行时无法正常运行vim.就其自身而言,vim显示良好; 但是,当在tmux窗格内时,换行符会变得混乱,并且会在窗格边界上撕裂:

在此输入图像描述

我在视频中使用ConEmu; 但是,cmd.exe中也会发生同样的事情.

更新:更改窗格会暂时修复此问题,但某些类型的编辑会再次发生.

vim tmux vagrant windows-10

8
推荐指数
1
解决办法
468
查看次数

有关MVC 3中Ninject创建的动作过滤器的生命周期的问题

我想在使用Ninject的MVC 3应用程序中使用全局范围的动作过滤器; 但是,我试图了解该过滤器的生命周期,它的依赖关系,以及如何通过修饰我的控制器和/或操作方法来为其依赖项引入变体.

我想让我的过滤器类型依赖于生命周期必然要求范围的对象,所以,像这样:

public sealed class MyGlobalActionFilter : IActionFilter
{
    public MyGlobalActionFilter(IService1 svc1, IService2 svc2, RequestType reqType)
    {
        // code here
    }

    // IActionFilter implementation here...
}
Run Code Online (Sandbox Code Playgroud)

......并在模块配置中......

Bind<IService1>().To<ConcreteService1>().InRequestScope()
Bind<IService2>().To<ConcreteService2>().InRequestScope()
BindFilter<MyGlobalActionFilter>(FilterScope.Global, null)
    .WhenControllerHas<RequestTypeAttribute>()
    .WithConstructorArgumentFromControllerAttribute<RequestTypeAttribute>(
        "reqType", 
        x => x.RequestType
    );
BindFilter<MyGlobalActionFilter>(FilterScope.Global, null)
    .WhenActionMethodHas<RequestTypeAttribute>()
    .WithConstructorArgumentFromActionAttribute<RequestTypeAttribute>(
        "reqType", 
        x => x.RequestType
    );
BindFilter<MyGlobalActionFilter>(FilterScope.Global)
    .When(x => true)
    .WithConstructorArgument("reqType", RequestType.Undefined)
Run Code Online (Sandbox Code Playgroud)

控制器和/或操作方法的属性表示特定于应用程序的"请求类型":

[RequestType(RequestType.Type1)]
public sealed class SomeController : Controller { /* code here*/ }
Run Code Online (Sandbox Code Playgroud)

我是否正确理解这应该如何运作?MyGlobalActionFilter的新实例是否会在每个HTTP请求上启动并注入?如果这不起作用,我错过了什么,以及什么是更好的方法来使这项工作?

此外,通过注入RequestType,BindFilter这里的语法似乎不必要地冗长,我不确定它是否像我期望的那样工作,并且似乎有更好的方法将默认值RequestType注入动作过滤器,如果a RequestTypeAttribute上没有控制器或动作方法.

请赐教!

c# ninject asp.net-mvc-3

6
推荐指数
1
解决办法
1205
查看次数

在Google App Engine上运行的CMS是否与Plone(在某些方面)相当?

我花了一段时间为Plone编写应用程序,并认为与其他许多CMS产品相比,Plone"内容管理正确".我想知道是否有类似的CMS在Google App Engine上运行.我正在寻找的巨大优势是:

  1. WSIWYG内容管理 - 我喜欢Plone的内容管理功能不需要登录隐藏的管理UI.它让我的生活更轻松地培训我的用户,因为我没有必要教他们两个不同的用户界面 - 内容管理功能已集成到网站的用户界面中.

  2. 一切都是"内容"对象--Plone将用户创建的大多数内容视为内容对象:图像,文章,事件,甚至用户(如果需要),意味着Plone的内容管理功能可以应用于所有这些:访问控制,工作流程等

  3. 工作流程 - 对于在软件中建模用户任务绝对必不可少.国家和过渡.在状态转换上运行的脚本.

  4. 具有"强类型"的内容对象--Plone允许您创建(以软件用语)内容"类",其与内容类型的其他实例的关系受类型限制.因此,例如,我可以创建一个article具有对a的引用的类型event,并且UI确保我可以为对象的字段创建articles和仅引用对象.(这些"类"的创建可以是开发人员任务,也可以隐藏在管理UI之后)eventeventarticle

是否存在具有这些功能的Google App Engine CMS?Python或Java都可以接受.

python java google-app-engine content-management-system

6
推荐指数
1
解决办法
771
查看次数

用于生成共享相同闭包变量的匿名委托的C#技术

我有一种情况需要生成一些类似的匿名代表.这是一个例子:

public void Foo(AnotherType theObj)
{
    var shared = (SomeType)null;

    theObj.LoadThing += () =>
    {
        if(shared == null)
            shared = LoadShared();

        return shared.Thing;
    };

    theObj.LoadOtherThing += () =>
    {
        if(shared == null)
            shared = LoadShared();

        return shared.OtherThing;
    };

    // more event handlers here...
}
Run Code Online (Sandbox Code Playgroud)

我遇到的麻烦是我的代码不是很干.每个事件处理程序的内容非常相似,可以很容易地参数化为工厂方法.阻止我这样做的唯一因素是每个委托需要共享对shared变量的引用.我无法shared使用ref关键字传递给工厂方法,因为您无法围绕ref变量创建闭包.有任何想法吗?

c# lambda anonymous-methods

6
推荐指数
1
解决办法
512
查看次数

依赖注入:如何配置包装的接口绑定

所以,假设我有一个界面IThingFactory:

public interface IThingFactory
{
    Thing GetThing(int thingId);
}
Run Code Online (Sandbox Code Playgroud)

现在,假设我有一个Thing从数据库中检索s 的具体实现.现在,我们还说我有一个具体的实现,它包装了一个现有的,IThingFactory并且Thing在命中包装之前检查是否存在于内存缓存中IThingFactory.就像是:

public class CachedThingFactory : IThingFactory
{
    private IThingFactory _wrapped;
    private Dictionary<int, Thing> _cachedThings;

    public CachedThingFactory(IThingFactory wrapped)
    {
        this._wrapped = wrapped;
        _cachedThings = new Dictionary<int,Thing>();
    }

    public Thing GetThing(int thingId)
    {
        Thing x;
        if(_cachedThings.TryGetValue(thingId, out x))
            return x;

        x = _wrapped.GetThing(thingId);

        _cachedThings[thingId] = x;

        return x;
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使用依赖注入来处理这样的场景,例如Ninject,以便我可以配置DI容器,以便我可以注入或删除像这样的缓存代理,或者说,执行日志记录的东西,或(在这里插入)?

c# dependency-injection ninject ninject-2

5
推荐指数
1
解决办法
809
查看次数

在angularjs中将特定数量的字符放在省略号(...)之后

我正在从facebook上阅读教育数据并直接显示在我的页面上.我发现一些字符串太长了所以我想把...放在angularjs中的一定数量的字符之后.

jeevan sadhana english medium high school 08
Run Code Online (Sandbox Code Playgroud)

jeevan sadha..
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-ng-repeat

5
推荐指数
1
解决办法
3169
查看次数