MVC4统一验证用户登陆和权限
我们可以自己写个类,用来做登陆权限验证,例如创建一个WebAuth.cs类,继承AuthorizeAttribute类,
在该类中重写方法:
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
}
我们按照微软官方的这个特性,重写一个属于自己的验证特性类就行了。
例如在方法体内我们判断是否存在session,如果不存在就跳转到登陆页面:
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Session["userid"] == null) {
filterContext.Result = new RedirectResult("~/Default1/Login");
//注意
//不可以使用下面的写法,使用下面的写法,执行完下面的语句后依然会继续执行controller内的方法,会产生安全性问题
//filterContext.HttpContext.Response.Redirect("~/Default1/Login");
}
}
写完保存后在controller里直接给要做验证的controller或action打上标签就可以了:
[WebAuth]
public class Default1Controller : Controller
{
//
// GET: /Default1/
public ActionResult Index()
{
string aa = string.Empty;
return View();
}
}
或者
[WebAuth]
public ActionResult Index()
{
string aa = string.Empty;
return View();
}
当然你也可以写一个父controller打上标签,然后需要鉴权的都继承它即可。
更新于:23天前