我正在尝试做一些自定义授权,所以我创建了一个覆盖该OnAuthorization方法的控制器.我还将该Authorize属性应用于此控制器.问题是为什么这个OnAuthorization方法被称为BEFORE基本表单认证过程?
我想在用户通过身份验证后授权用户.我错过了什么吗?
这是代码:
[Authorize]
public class AuthorizationController : Controller
{
protected override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
List<string> allowedControllers = new List<string>() { "SecurityController" };
List<string> allowedActions = new List<string>() { "Index" };
string controllerName = filterContext.Controller.GetType().Name;
string actionName = filterContext.ActionDescriptor.ActionName;
if (!allowedControllers.Contains(controllerName)
|| !allowedActions.Contains(actionName))
{
filterContext.Result = View("UnauthorizedAccess");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我测试的控制器是这样的:
public class SecurityController : AuthorizationController
{
public ActionResult Index()
{
return View(); …Run Code Online (Sandbox Code Playgroud) 不知何故,应用程序事件日志计数最终达到18,446,744,073,709,551,499.当我想使用事件查看器查看事件时,这会导致MMC管理单元失败,从而产生System.OverflowException(对于Int64,值太大或太小.).有什么想法,还是我应该清除日志?
有没有办法填写ITemplate代码?我想我有一个UpdatePanel:
UpdatePanel upnl = new UpdatePanel();
// What should be done next?
//upnl.ContentTemplate = ...
Run Code Online (Sandbox Code Playgroud)
它的结果相当于:
<asp:UpdatePanel runat="server" ID="upnl">
<ContentTemplate>
test
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud) 我想使用构造函数初始化派生类中的受保护成员,但由于我调用base()我不能调用this(),这使我的一些调用"闻":
public class ABase
{
public object Param1 { get; set; }
public object Param2 { get; set; }
protected object Param3 { get; set; }
public ABase()
: this(null, null)
{ }
public ABase(object param1)
: this(param1, null)
{ }
public ABase(object param1, object param2)
{
Param1 = param1;
Param2 = param2;
}
}
public class A : ABase
{
public A()
{ InitParam3(); }
public A(object param1)
: base(param1)
{ InitParam3(); }
public A(object param1, object param2)
: …Run Code Online (Sandbox Code Playgroud)