【发布时间】:2017-06-15 14:33:53
【问题描述】:
我正在为 ASP.NET 使用 MVC 5。
我正在尝试创建自定义授权属性。使用 OpenId 并且如果存在会话变量,用户将通过我的应用程序进行身份验证。我已将 [OpenIdAuthorize] 添加到我的控制器中。当我在登录后查看它们时,我会在我的应用程序中弹回 /openid/index。会话变量存在。我添加了断点,但它们从未到达。
public class OpenIdAuthorizeAttribute : System.Web.Mvc.AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext.Session["FriendlyEmail"] == null)
return false;
else
return true;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if(filterContext.HttpContext.Session["FriendlyEmail"] == null)
filterContext.Result = new RedirectResult("/openid/index");
}
}
这是我的控制器:
[OpenIdAuthorize]
public class RuleSetController : Controller
【问题讨论】:
-
你覆盖
AuthorizeCore函数吗? -
请看我更新的答案。问题依然存在。
-
AuthorizeCore函数上的断点是否被命中? -
正常的
AuthorizeAttribute是否仍然有效?它可能已作为全局过滤器添加到FilterConfig? -
当我将它添加到过滤器配置时,代码会运行。一旦用户访问我的应用程序,它就会尝试重定向它们。我可以添加代码以在某些页面上进行授权吗?
标签: c# asp.net asp.net-mvc