在我的asp.net mvc3应用程序中,我有一个自定义授权属性,如下所示.
public class CustomAuthorize : AuthorizeAttribute
{
public IAccountRepository AccountRepository { get; set; }
public CustomAuthorize()
{
this.AccountRepository = new UserModel();
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
base.AuthorizeCore(httpContext);
return AccountRepository.isEnabled(HttpContext.Current.User.Identity.Name);
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
base.HandleUnauthorizedRequest(filterContext);
}
}
Run Code Online (Sandbox Code Playgroud)
我的[CustomAuthorize]
控制器操作上有标记,AuthorizeCore
方法工作正常 - 它执行我想要的逻辑(确保帐户实际启用),然后返回.
但是,HandleUnauthorizedRequest
根据我的理解它应该允许我控制未授权请求的行为的重写方法根本不运行.我在那里放了一个断点,我把代码放在那里,我未经授权访问我的应用程序,代码永远不会运行.
我错过了什么?
编辑:我做了一些更多的研究,发现了一些其他人有这个问题,但不幸的是没有解决方案.
EDIT2:示例代码
[CustomAuthorize]
public class UserController: Controller
{
public UserController()
{
//do stuff here
}
}
Run Code Online (Sandbox Code Playgroud)
编辑3:@Fabio
这就是我想要做的.我有一个工作正常的登录页面(表单身份验证) - 它调用我的自定义登录,然后调用我的AuthorizeCore覆盖.我的应用程序使用大量的ajax调用,我的最终目标是每当用户使用该应用程序时,管理员禁用它们,在禁用后进行ajax调用(尽管仍在登录)应该将其注销.但是,为了做到这一点,我想返回一个自定义响应,如果用户正在进行ajax调用,为此,我需要ovverride HandleUnauthorizedRequest.但是如果用户登录,我的Authorize Core(以及扩展名HandleUnauthorizedRequest)将被忽略(尽管事实上我已经在ajax正在调用的所有控制器操作上使用了标签).
简而言之:我想在每个请求上授权用户,而不仅仅是登录请求(这似乎是会员提供商现在正在做的事情)
我有一个非常简单的.net 4桌面应用程序,用c#编写,需要显示插入到SQL Server(2005)上的表中的一些数据.数据本身非常简单,只有一行大约10列(主要是其他数据的计数).
我可以每隔x间隔从应用程序轮询一次sql server,但我的首选是让sql server将数据推送到这个应用程序,如果可能的话,因为"新数据"的时间通常是不规则的.
简而言之,我想知道这是否可行.在发布这个问题之前做了一些研究,我发现了一些可能性.
1)SignalR:我发现这个问题看起来很有希望,但这似乎是在Web应用程序而不是桌面应用程序的上下文中.在审查了signalR wiki之后,在我看来它需要某种Web服务或其他我想要避免的http连接.
2)Sql server更改跟踪,从这个问题.首先,我不是在sql 2008上,所以我假设我必须安装或配置它(这不是问题),但我也不确定这是否会提供我需要的东西.
我还要提到的是,这个客户端应用程序可能存在于100多个不同的PC上,这些都需要在数据更改时得到通知.
那么,这样的事情可能吗?如果问题有点含糊,我道歉 - 并提前感谢您的帮助!
这几年来一直困扰着我的事情,如果不是几年的话.将图像粘贴到Outlook电子邮件中时,它没有边框.我可以通过右键单击图片并选择格式图片来添加这些,并且可能还有一个工具可以执行此操作.我的问题是:有没有办法确保所有粘贴的图像都有边框?如果有一个Outlook的CSS样式表,我可以在这里做到这一点; 或者某个地方有设置?
提前致谢!
是否有现有的Java库可以告诉我String是否包含英语语言文本(例如,我需要能够区分法语或意大利语文本 - 该函数需要为法语和意大利语返回false,对于英语是真的) ?
当我们写(用某种语言或其他语言):
lengthOf(n)
Run Code Online (Sandbox Code Playgroud)
我们认为它是英语"填空"结构的缩写,例如:
length of __
Run Code Online (Sandbox Code Playgroud)
但是当我们写这样的东西时:
isAnInteger(n)
appendTo(n,m)
Run Code Online (Sandbox Code Playgroud)
我们想到的句子如下:
__ is an integer
append ___ to ___
Run Code Online (Sandbox Code Playgroud)
因此,允许函数调用表达式似乎更自然:
(n)isAnInteger
append(n)to(m)
Run Code Online (Sandbox Code Playgroud)
'函数名称'是这样的:
_isAnInteger
append_to_
Run Code Online (Sandbox Code Playgroud)
任何人都可以命名现有的编程语言吗? 我知道面向对象的语言让对象成为前面的一个参数,但我想知道更灵活的语法.
我有一个使用与Cookie插件的jQuery UI的标签控件(如演示了Web应用程序(ASP.NET MVC3)在这里).
创建选项卡时,我使用path选项设置cookie的路径:
$("#tabs").tabs({ cookie: { path: '/A/' } });
Run Code Online (Sandbox Code Playgroud)
在Firefox中,这可以正常工作.无论"/ A /"(例如"A/B/C")之后的网址是什么,标签控件始终会正确记住上次选择的标签,并在重新加载页面时切换到该标签.
但是,在Chrome(v21)上,浏览器偶尔会添加另一个带有不同路径的标签Cookie.然后我最后得到两个cookie,一个是我最初创建的路径"/ A /",另一个是路径"/ A/B /",这是我目前正在使用的URL.不幸的是,似乎这个"双cookie"导致错误的选项卡有时会在页面刷新时加载,因为这两个cookie似乎有冲突.
有没有办法防止Chrome中的这种行为?我已经尝试了几种编程解决方案(例如,如果路径包含"/ A /",则强制路径为"/ A /",但由于该代码永远不会到达,因此Chrome似乎自动执行此操作).
谢谢您的帮助!
似乎问题是chrome不区分不同路径上具有相同名称的cookie; 所以我在我的应用程序中的其他选项卡控件搞乱了.一旦我给了cookie一个独特的名字,事情就开始正常了!
我正在构建一个针对.NET的编译器,我以前直接生成了CIL,但生成DLR树将使我的生活更容易.我支持一些动态功能,即运行时函数创建和ducktyping,但绝大多数代码都是完全静态的.
所以现在已经解释过,我有以下问题:
任何对此的见解或对博客/代码/会谈的参考将不胜感激.
想知道是否有任何工具可以帮助我在文本中检测代词的名称.
例
Jone is Spanish. He can speak German.
Run Code Online (Sandbox Code Playgroud)
我如何标记He
来Jone
?
作为这个问题的延续,我有一个与dotnetopenauth有关的问题.
基本上,我想知道RP中指定的领域是否必须是应用程序的实际基本URL?那是(http://localhost:1903
)?鉴于现有的架构很难删除重定向 - 我尝试将域设置为基础OpenId控制器(http://localhost:1903/OpenId
)并手动测试确实生成了XRDS文档.但是,应用程序似乎冻结,EP日志显示以下错误:
2012-10-10 15:17:46,000 (GMT-4) [24] ERROR DotNetOpenAuth.OpenId - Attribute Exchange extension did not provide any aliases in the if_available or required lists.
码:
依赖方:
public ActionResult Authenticate(string RuserName = "")
{
UriBuilder returnToBuilder = new UriBuilder(Request.Url);
returnToBuilder.Path = "/OpenId/Authenticate";
returnToBuilder.Query = null;
returnToBuilder.Fragment = null;
Uri returnTo = returnToBuilder.Uri;
returnToBuilder.Path = "/";
Realm realm = returnToBuilder.Uri;
var response = openid.GetResponse();
if (response == null) {
if (Request.QueryString["ReturnUrl"] != null && User.Identity.IsAuthenticated) …
Run Code Online (Sandbox Code Playgroud) 我有一些代码(用于帮助url路由)试图在控制器中找到一个动作方法.
我的控制器看起来像这样:
public ActionResult Item(int id)
{
MyViewModel model = new MyViewModel(id);
return View(model);
}
[HttpPost]
public ActionResult Item(MyViewModel model)
{
//do other stuff here
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
以下代码尝试查找与url操作匹配的方法:
//cont is a System.Type object representing the controller
MethodInfo actionMethod = cont.GetMethod(action);
Run Code Online (Sandbox Code Playgroud)
今天这个代码抛出了一个System.Reflection.AmbiguousMatchException: Ambiguous match found
有意义的,因为我的两个方法具有相同的名称.
我看了一下Type
对象的可用方法,发现public MethodInfo[] GetMethods();
它似乎做了我想要的,除了搜索具有特定名称的方法似乎没有重载.
我可以使用这个方法并搜索它返回的所有内容,但我想知道是否有另一种(更简单的)方法来获取具有特定名称的类中的所有方法的列表,当有多个时.
.net ×4
c# ×4
java ×2
asp.net ×1
cil ×1
cookies ×1
dictionary ×1
javascript ×1
jquery ×1
jquery-ui ×1
lang ×1
nlp ×1
openid ×1
outlook ×1
reflection ×1
signalr ×1
sql-server ×1
stanford-nlp ×1
syntax ×1
text ×1
vba ×1
weka ×1