【发布时间】:2017-12-21 16:38:42
【问题描述】:
在登录一个帐户后的webform中,我们在每个.aspx文件的Page Load函数中使用以下代码来检查页面是否可以访问:
if (Session["User"]!=null)
{
Response.Redirect("LoggedInPage.aspx");
}
在 MVC5 中执行相同的操作我应该怎么做??
【问题讨论】:
标签: asp.net asp.net-mvc-5
在登录一个帐户后的webform中,我们在每个.aspx文件的Page Load函数中使用以下代码来检查页面是否可以访问:
if (Session["User"]!=null)
{
Response.Redirect("LoggedInPage.aspx");
}
在 MVC5 中执行相同的操作我应该怎么做??
【问题讨论】:
标签: asp.net asp.net-mvc-5
现在我想我明白了,您想阻止用户在登录后进入注册页面。
查看 AuthorizeAttribute。
1- ASP.Net MVC: Can the AuthorizeAttribute be overriden?
public class CustomAuthorize : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var isAuthorized = base.AuthorizeCore(httpContext);
if (!isAuthorized)
{
return false;
}
if (httpContext.User.Identity.IsAuthenticated && Request.Url.ToString().Contains("Register"))
{
return false;
}
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
base.HandleUnauthorizedRequest(filterContext);
}
else
{
filterContext.Result = new RedirectToRouteResult(new
RouteValueDictionary(new { controller = "Error", action = "AccessDenied" }));
}
}
}
【讨论】:
登录后应该进行其他操作
public ActionResult Login() {
return RedirectToAction("Index");
}
public ActionResult Index()
{
return View();
}
【讨论】: