我正在尝试构建自定义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.
我Mapper.DynamicMap()在一个泛型方法中使用.CreateMap(),并且希望在不使用的情况下忽略一些null的任何源值.这甚至可能吗?
我正在尝试测试在前置过滤器中使用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) 我在不同的项目中通过我的解决方案传播了6个T4模板,是否可以通过单击运行它们或者我是否需要逐个浏览它们?
这是用例:
如果用户在其中一个可见输入中进行了某个选择,那么只有一组字段才能显示这个长形式.阅读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,因为我真的经历了每个字段删除并重新附加这些验证规则.我的问题是:是不是有更简单的方法?性能也是一个问题,在其中一种巨大的形式中,您可以感觉到点击和验证运行之间的延迟.
我有一个简单的一级深层词汇分类法.像Vocabulary-> Term-> Node这样的东西.我想知道的是,如果有一个内置函数来获取与单个术语相关的节点数组,比如taxonomy_select_nodes(),但会返回一个节点数组而不是一个字符串.
假设我有类似的动作
public ActionResult TheAction(string path) { ... }
Run Code Online (Sandbox Code Playgroud)
我想做的是让像www.myapp.com/controller/TheAction/path/to/content这样的请求将路径的"path/to/content"部分作为操作的"path"参数传递.
我的猜测是,我必须摆弄一个自定义路线/请求处理程序,但在戴上复合器的手套之前,我想看看你们是否有任何其他建议.
我在服务上有这两种方法:
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) .net ×2
asp.net-mvc ×2
c# ×2
asp.net ×1
attributes ×1
automapper ×1
drupal ×1
javascript ×1
jquery ×1
php ×1
rspec2 ×1
t4 ×1
testing ×1
validation ×1