小编Rom*_*lla的帖子

使用ASP.NET MVC进行基于声明的授权

我正在阅读很多博客文章和stackoverflow答案,但我仍然无法找到一个使用基于声明的身份验证和授权的真实世界开源项目,以便我可以了解如何实际实现这些.

到目前为止,我能找到的是Thinktecture.IdentityModel这个博客在示例网站上实现基于声明的授权.如果你们可以指出一些使用声明的开源项目,那将非常有帮助.

我感兴趣的是如何使用数据库检索我的应用程序的声明.

到目前为止,我曾尝试是在内存中的权利要求商店使用模拟databsae,我创建了一个CustomClaimsTransformerCustomAuthorisationManager这个样子.

public class CustomClaimsTransformer : ClaimsAuthenticationManager
    {
        public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal)
        {
            //validate name claim
            string nameClaimValue = incomingPrincipal.Identity.Name;

            return CreatePrincipal(nameClaimValue);
        }

        private ClaimsPrincipal CreatePrincipal(string userName)
        {
            int userId = ClaimStore.Users.First(u => u.Value == userName).Key;
            var claims = ClaimStore.ClaimsSet.Where(c => c.Key == userId);

            var claimsCollection = claims.Select(kp => kp.Value).ToList();

            return new ClaimsPrincipal(new ClaimsIdentity(claimsCollection, "Custom"));
        }
    }

public class CustomAuthorisationManager : ClaimsAuthorizationManager
    { 
        public override bool CheckAccess(AuthorizationContext …
Run Code Online (Sandbox Code Playgroud)

authentication authorization claims-based-identity asp.net-mvc-4

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

这是策略模式吗?

一点背景:

在我正在开发的系统中,有各种类型的CSV文件需要读取并将内容保存在不同的数据库表中.由于这是关于根据输入改变行为,我研究了装饰器和策略模式,并为我的系统提出了以下解决方案.

首先,我创建了以下接口.

  • ICDRMapper从给定的CSV文件中读取每一行,并在运行验证/修改(如果有)后映射到对象.每种CDR类型都有许多具体实现.

  • ICDRReader获取输入的CSV文件并读取每一行并将其传递给映射器.每个阅读器实现都使用MEF元数据进行修饰,以便ICDREngine可以即时找到正确的元数据.该接口还为每种CDR类型提供了许多实现.

  • ICDREngine实现使用MEF元数据来定位匹配的ICDRReader实现.这通常只有一个实现.

然后,我创建了一个AbstractCDRReaderAbstractCDRMapper使用的装饰器模式,将特定的实现委托给不同的具体类.

AbstractCDRReaderICDRMapper像引擎一样,根据MEF元数据选择正确的实现.

以下是生成的类图.

生成的类图

所以我的问题是,

  • 这种策略模式还是不同的模式?

  • 有什么方法可以改进这个设计,以便下次我需要阅读一个全新的不同的CSV文件时,我可以很快地完成实现吗?

c# design-patterns

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