在ASP.Net中,我们之前编写了此代码用于授权:
public class PageBase : System.Web.UI.Page
{
protected override void OnInit(System.EventArgs e)
{
string CurrentPath = HttpContext.Current.Request.Url.AbsolutePath.ToLower();
//Check If User Access to this Path
if(WebUser.Access(CurrentPath) == false)
{
Reposponse.Redirect("Loagin.aspx");
}
}
}
WebUser
是包含用户数据的会话:
public User WebUser
{
get
{
if (HttpContext.Current.Session["User"] != null)
{
return (User)HttpContext.Current.Session["User"];
}
else
{
HttpContext.Current.Response.Redirect("Login.aspx", true);
return null;
}
}
}
我们继承了PageBase
的所有网页。
现在,如果我想使用MVC
编写类似的代码,我可以编写一个在每个请求上运行的代码吗?
感谢
答案 0 :(得分:2)
您希望根据您的问题在MVC中对用户进行身份验证和授权。您可以使用身份验证和授权过滤器对用户进行身份验证和授权。这很简单,
请查看link,了解我们如何创建身份验证和授权过滤器以及如何在代码中使用它们。
答案 1 :(得分:1)
您可以创建一个BaseController
课程并将其应用于每个MVC Controllers
。您可以将通用属性和方法添加到:
public class ControllerBase : Controller
{
public string UniversalPath { get; set; }
public ControllerBase()
{
}
}
然后让您的MVC page controllers
继承自BaseController
而不是默认的Controller
类:
public class ExamplePageController : ControllerBase
{
public ActionResult Index(int id)
{
return View();
}
}