小编Jos*_*jos的帖子

在自定义Authorize属性中覆盖AuthorizeCore会导致"找不到合适的方法来覆盖"错误

我正在尝试构建自定义AuthorizeAttribute,所以在我的Core项目(类库)中我有这样的代码:

using System;
using System.Web;
using System.Web.Mvc;
using IVC.Core.Web;
using System.Linq;

namespace IVC.Core.Attributes
{
    public class TimeShareAuthorizeAttribute : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            if(!httpContext.Request.IsAuthenticated)
                return false;

            var rolesProvider = System.Web.Security.Roles.Providers["TimeShareRoleProvider"];

            string[] roles = rolesProvider.GetRolesForUser(httpContext.User.Identity.Name);

            if(roles.Contains(Website.Roles.RegisteredClient, StringComparer.OrdinalIgnoreCase))
            {
                return true;
            }

            return false;
        }

        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            filterContext.Result = new RedirectResult("/TimeShare/Account/LogOn");

            base.HandleUnauthorizedRequest(filterContext);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试构建该东西时,我收到此错误:错误2'IVC.Core.Attributes.TimeShareAuthorizeAttribute.AuthorizeCore(System.Web.HttpContextBase)':找不到合适的方法来覆盖 ...

我在这里错过了什么吗?我已经搜索了所有网站,但我找到的每个网站都告诉我要完成我在这里所做的事情.我正在使用mvc2 btw.

  • 编辑添加:如果我在同一个解决方案中将类移动到mvc项目,则没有编译器错误.

asp.net-mvc attributes authorization

28
推荐指数
3
解决办法
3万
查看次数

使用DynamicMap()并忽略null源值

Mapper.DynamicMap()在一个泛型方法中使用.CreateMap(),并且希望在不使用的情况下忽略一些null的任何源值.这甚至可能吗?

.net c# automapper

20
推荐指数
1
解决办法
5830
查看次数

RoR:测试使用http令牌身份验证的操作

我正在尝试测试在前置过滤器中使用http令牌身份验证的控制器.我的问题是,它使用curl传递令牌是可行的,但在我的测试中它总是失败(我使用的是rspec btw).尝试了一个简单的测试,看看是否正在传递令牌,但似乎它没有这样做.我错过了什么来让测试实际将令牌传递给控制器​​?

这是我之前的过滤器:

    def restrict_access
      authenticate_or_request_with_http_token do |token, options|
        api_key = ApiKey.find_by_access_token(token)
        @user = api_key.user unless api_key.nil?
        @token = token #set just for the sake of testing
        !api_key.nil?
      end 
    end
Run Code Online (Sandbox Code Playgroud)

这是我的测试:

    it "passes the token" do
      get :new, nil,
        :authorization => ActionController::HttpAuthentication::Token.encode_credentials("test_access1")

      assigns(:token).should be "test_access1"
    end
Run Code Online (Sandbox Code Playgroud)

testing ruby-on-rails rspec2

20
推荐指数
1
解决办法
7900
查看次数

只需单击即可运行多个T4模板

我在不同的项目中通过我的解决方案传播了6个T4模板,是否可以通过单击运行它们或者我是否需要逐个浏览它们?

t4 visual-studio

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

MVC3不显眼的验证:如何从一组元素中删除/重新附加验证?

这是用例:

如果用户在其中一个可见输入中进行了某个选择,那么只有一组字段才能显示这个长形式.阅读Brad Wilson关于这个主题的帖子我认为jQuery.validator.unobtrusive.parse('.extra-data')其中.extra-data是一个隐藏div的类.没有运气,因为第一次解析完成后数据已经存在.

所以最后我提出了这个删除规则:

$('.data-panel').find('input[type="text"], textarea, select').each(function (i, item) {
    var currentRules = $(item).rules('remove'); // Saving removed rules to a sorta dictionary
    if (!$.isEmptyObject(currentRules)) {
        removedRules[$(item).attr("name")] = currentRules;
    }
 });
Run Code Online (Sandbox Code Playgroud)

并重新附加它们:

$('.data-panel').find('input[type="text"], textarea, select').each(function (i, item) {
    if (!$.isEmptyObject(removedRules[$(item).attr('name')])) {
        $(item).rules('add', removedRules[$(item).attr('name')]);
    }
});
Run Code Online (Sandbox Code Playgroud)

问题是,感觉有点像hacky,因为我真的经历了每个字段删除并重新附加这些验证规则.我的问题是:是不是有更简单的方法?性能也是一个问题,在其中一种巨大的形式中,您可以感觉到点击和验证运行之间的延迟.

javascript validation jquery asp.net-mvc-3

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

使用Drupal API获取与类别术语相关的节点数组

我有一个简单的一级深层词汇分类法.像Vocabulary-> Term-> Node这样的东西.我想知道的是,如果有一个内置函数来获取与单个术语相关的节点数组,比如taxonomy_select_nodes(),但会返回一个节点数组而不是一个字符串.

php drupal

4
推荐指数
1
解决办法
1726
查看次数

MVC3路由:将路径的一部分作为"路径"参数传递

假设我有类似的动作

public ActionResult TheAction(string path) { ... }
Run Code Online (Sandbox Code Playgroud)

我想做的是让像www.myapp.com/controller/TheAction/path/to/content这样的请求将路径的"path/to/content"部分作为操作的"path"参数传递.

我的猜测是,我必须摆弄一个自定义路线/请求处理程序,但在戴上复合器的手套之前,我想看看你们是否有任何其他建议.

.net asp.net-mvc

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

合并这两种非常相似的方法

我在服务上有这两种方法:

public Offer GetOffer(int id, string languageCode = Website.LanguageSettings.DefaultLanguageCode)
        {
            Entities.Offer offerEntity = _db.Offers.FirstOrDefault(offer => offer.Id == id);

            if (languageCode.ToLower(CultureInfo.InvariantCulture) != Website.LanguageSettings.DefaultLanguageCode)
            {
                using (IDocumentSession session = store.OpenSession())
                {
                    Translation.Offer translatedOffer = session.LuceneQuery<Translation.Offer>(Website.RavenDbSettings.Indexes.Offers)
                        .Where(string.Format("ObjectId:{0} AND LanguageCode:{1}", id, languageCode))
                        .OrderByDescending(offer => offer.Id)
                        .FirstOrDefault();

                    var offerPOCO = Mapper.DynamicMap<Translation.Offer, Offer>(translatedOffer);
                    offerPOCO.Id = offerEntity.Id;

                    return offerPOCO;
                }
            }

            return Mapper.Map<Entities.Offer, Offer>(offerEntity);
        }
Run Code Online (Sandbox Code Playgroud)

public Hotel GetHotel(int id, string languageCode = Website.LanguageSettings.DefaultLanguageCode)
        {
            Entities.Hotel hotelEntity = _db.Hotels.FirstOrDefault(hotel => hotel.Id == id);

            if (languageCode.ToLower(CultureInfo.InvariantCulture) != Website.LanguageSettings.DefaultLanguageCode) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net

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