【发布时间】:2019-08-13 05:39:06
【问题描述】:
在一个网络应用程序中,我试图引入操作属性以在我的操作中添加身份验证。现在,我在每个操作中单独检查有效会话。
我创建了一个使用 AuthorizeAttribute 的自定义属性:
public class BaseAuthAttribute : AuthorizeAttribute
我用
装饰我的动作[BaseAuth]
现在在 BaseAuthAttribute 我有这段代码
public override void OnAuthorization(AuthorizationContext filterContext)
{
var session = new BusinessLayer.PortalUser(filterContext.HttpContext.Request.Cookies["appname"]);
if(!session.IsAuthorized()
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary { { "controller", "Home" }, { "action", "Login" } });
}
}
但是当我没有活动会话时,Result = new 行会爆炸,对象实例对对象没有意义。
我没有使用 ASP.Net 内置的身份验证,而是通过自定义来确定是否存在会话/用户。那么 filterContext 是否只能在您使用 AP.Net 成员资格类时使用?
如果他们的会话已过期/不存在,或者确实具有正确的权限,我需要重定向到视图
【问题讨论】:
标签: c# asp.net-mvc