Phân quyền trong mvc bằng AuthorizeAttribute
// Lưu session
public class SessionConfig
{
public static SinhVien GetTaiKhoan()
{
return (SinhVien)HttpContext.Current.Session["TK"];
}
public static void SetTaiKhoan(SinhVien tenDangNhap)
{
HttpContext.Current.Session["TK"] = tenDangNhap;
}
public static TaiKhoanNV GetTaiKhoanNV()
{
return (TaiKhoanNV)HttpContext.Current.Session["TKNV"];
}
public static void SetTaiKhoanNV(TaiKhoanNV Username)
{
HttpContext.Current.Session["TKNV"] = Username;
}
}
// Kiểm tra đăng nhập và quyền
public class AdminAuthorize : AuthorizeAttribute
{
public string ChucNang = "";
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (SessionConfig.GetTaiKhoanNV() == null)
{
// Chuyển hướng đường link
filterContext.Result = new RedirectToRouteResult(new
RouteValueDictionary(new { controller = "TaiKhoanNV", action = "DangNhap" }));
return;
}
// Kiểm tra quyền
var mapPQ = new mapPhanQuyen();
if(mapPQ.KiemTraQuyen(SessionConfig.GetTaiKhoanNV().ID, ChucNang) == false)
{
// Chuyển hướng đường link trang báo lỗi phân quyền
filterContext.Result = new RedirectToRouteResult(new
RouteValueDictionary(new { controller = "TaiKhoanNV", action = "LoiPhanQuyen" }));
return;
}
return;
}
}