小编Ric*_*ole的帖子

代码合同应该用于安全吗?

您是否有任何理由不使用代码合同来执行业务规则?

想象一下,您有一个User代表系统的单个用户的类,并定义可以对其他用户执行的操作.你可以写一个ChangePassword像这样的方法......

public void ChangePassword(User requestingUser, string newPassword)
{
    Contract.Requires<ArgumentNullException>(requestingUser);
    Contract.Requires<ArgumentNullException>(newPassword);

    // Users can always change their own password, but they must be an
    // administrator to change someone else's.
    if (requestingUser.UserId != this.UserId &&
        !requestingUser.IsInRole("Administrator"))
        throw new SecurityException("You don't have permission to do that.");

    // Change the password.
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者你可以实施安全检查作为前提条件Contract.Requires......

public void ChangePassword(User requestingUser, string newPassword)
{
    Contract.Requires<ArgumentNullException>(requestingUser != null);
    Contract.Requires<ArgumentNullException>(newPassword != null);

    // Users can always change their own password, but …
Run Code Online (Sandbox Code Playgroud)

security .net-4.0 code-contracts

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

RavenDB:索引来自多个集合的文档

我有几个文档集合偶尔需要汇总到一个索引中以便进行报告.

此FAQ提供了在Raven Studio中编写此类索引的解决方案:http://ravendb.net/faq/indexing-across-entities

虽然我知道我不会得到完整的编译时检查,但我试图避免完全未经检查的代码,如下所示:

public class Assets_ById : AbstractIndexCreationTask
{
    public override IndexDefinition CreateIndexDefinition()
    {
        return new IndexDefinition
        {
            Map = @"from doc in docs
                    where doc[""@metadata""][""Raven-Entity-Name""] == ""Cars"" ||
                          doc[""@metadata""][""Raven-Entity-Name""] == ""Trains"" ||
                          doc[""@metadata""][""Raven-Entity-Name""] == ""Boats"" ||
                          doc[""@metadata""][""Raven-Entity-Name""] == ""Planes""
                    select new
                    {
                        Cost = doc.Cost,
                        Id = doc.Id,
                        Name = doc.Name,
                        Type = doc.Type,
                    };"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有类似于泛型的东西AbstractIndexCreationTask<T>允许我用lambda表达式定义异构索引?

ravendb

6
推荐指数
2
解决办法
1788
查看次数

标签 统计

.net-4.0 ×1

code-contracts ×1

ravendb ×1

security ×1