小编jca*_*ddy的帖子

WCF ClaimsAuthenticationManager中的依赖注入

我已使用Ninject为我的WCF服务成功配置了DI.每个服务类都有一个构造函数,Ninject在运行时将实例注入其中.

public class MessageService : ServiceBase,IMessageService
    {           
        private readonly IMessageRepository _messageRepository;
        private readonly IMappingEngine _mapper;  // AutoMapper mapping engine

        // Instances injected in constructor by Ninject
        public MessageService(IMessageRepository messageRepository, IMappingEngine mapper)
        {
            _messageRepository = messageRepository;
            _mapper = mapper;
        }     
    ...
}
Run Code Online (Sandbox Code Playgroud)

我的理解是,这是通过告诉Wcf使用NinjectServiceHostFactory来激活服务来实现的.

一切都很好......这是一种享受.

我有许多类库,由wcf服务项目引用.其中一个库具有派生自ClaimsAuthenticationManager的类.它旨在将传入的声明转换为特定于域的声明.WCF脚手架在运行时将此类实例化为标识管道的一部分.我希望此类使用存储库模式从数据库中获取标识的业务角色.然后,它将创建具有特定于域的声明的新ClaimsIdentity.现在我可以新建一个存储库实例,但我希望Ninject在运行时注入它.我创建了一个带有存储库接口参数的构造函数,完全天真地希望Ninject能够做到这一点.WCF失败,因为它找不到无参数构造函数.

当我基本上没有引用类库中的Ninject内核时,如何让Ninject注入实例?

我的理解是IoC容器应该在组合根处创建,在我的情况下是在WCF服务主机中.因为它是实例化我的类的Wcf管道,所以我无法控制进程以连接依赖项.或者我呢?

wcf dependency-injection ninject

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

Asp.net核心授权重定向到失败的指定路径

在"旧"ASP.NET中,我可以构建自定义授权属性并覆盖HandleUnauthorizedRequest.我似乎无法使用自定义授权处理程序使用ASP.NET Core执行此操作.后者要么"成功"要么"失败",我想根据失败的性质重定向到其他控制器动作.

这是场景.我的网络应用程序的用户有一个声明,表明他们是"活跃"用户,即他们已经完全注册,我们已经验证了他们的详细信息等.新用户已经使用OpenIdConnect中间件进行了身份验证,但是,直到我们完全验证并设置他们的帐户,没有"主动"用户声明.因此,新用户和活动用户都已经过身份验证.我想阻止新用户访问大部分应用程序.每当他们尝试访问https://app.example.com/dashboard时,我想将它们重定向到https://app.example.com/newuser页面,他们可以从中进行设置过程.

我可以在我的控制器上使用授权策略来检查是否存在"活动"用户声明并允许访问.当新用户没有此声明并且授权失败时,我希望授权处理程序具有一些逻辑,然后将它们重定向到他们有权访问的应用程序区域.但我不知道如何使用ASPNET核心中的授权框架来做到这一点.

有一种笨重的解决方案使用CookieMiddleware并为OnRedirectToAccessDenied事件实现处理程序 - 请参阅https://github.com/aspnet/Mvc/issues/4890.我还想过实现一个在每个请求上运行的动作过滤器.

我只是在这里傻吗?当然,想要对授权失败执行某些操作是有意义的,这不仅会让用户重新进行身份验证.

asp.net asp.net-mvc

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

在ASP.NET 4.6 MVC应用程序中引用.NET Core类库

我认为我在这里缺少一些东西,我提前为愚蠢道歉.试图拥抱dotnet核心的新世界,并将项目作为一种尝试学习的方式.

我已经编写了一些身份验证中间件来使用ASP.NET Core Identity.我使用.NET核类库作为中间件 - 优点是我相信我可以针对任何框架以及构建我的组件的Nuget包.当与基于VS2015 RC2模板的.NET Core的ASP.NET Core Web应用程序一起使用时,中间件可以正常工作.

我喜欢冒险,我决定创建一个基于OWIN/Katana认证中间件的组件版本,这样我就可以在ASP.NET 4.5/6 Web应用程序中使用它.我没有创建传统的类库项目,而是再次使用.NET Core Class Library模板,但仅针对.NET 4.6,即net46.它编译得很好,但我无法让我的ASP.NET 4.6应用程序引用它.我按照这个SO问题中的信息来创建一个NuGet包,创建一个本地源,然后尝试将它添加到我的ASP.NET 4.6项目,但它失败并出现错误:

无法解析依赖关系'NETStandard.Library'.使用的来源:'nuget.org','AspNetRc2Source','MyGet','本地','Microsoft和.NET','Microsoft Visual Studio离线包'.0

我的头脑旋转着依赖和框架.

无论如何,这里是我的.NET Core类库中的project.json文件 - 你可以看到它只针对.NET 4.6,这也是我的ASP.NET应用程序的目标.

.NET核心库 - 中间件组件

我觉得我需要一些严肃的.NET 101课程来了解所有这些依赖关系如何组合在一起,但如果有人能够指出我正确的方向,我将不胜感激.

.net asp.net .net-core asp.net-core .net-core-rc2

3
推荐指数
1
解决办法
1477
查看次数

Javascript闭包 - 变量的生命周期

作为一个相当新的Javascript和ac#背景我一直在磕磕绊绊.我很快就知道,我需要了解函数本身就是对象这一事实,而且JS闭包通常是导致混淆的原因.

我试图理解这段代码

// Function which returns object with function properties
function myFunc() {

    value = 42;

    var result = {
        value: value,
        getValue: getValue,
        incrementValue: incrementValue,
        setValue: setValue,
    };
    return result; 

    function setValue(y) {
        value = y;
    };

    function getValue() {
         return value;   
    }; 

    function incrementValue() {
        value++;
    };
};

// Helper function to print out results
function printResults(m,x){
    $('#output').append(m + ': ' + x).append('<br/>');
};

var myObject = myFunc();  // returns the object 
printResults('Inital call to getValue',myObject.getValue());

myObject.setValue(59);
printResults('Called …
Run Code Online (Sandbox Code Playgroud)

javascript closures

0
推荐指数
1
解决办法
861
查看次数