Вы не должны использовать codebehind с ASP.Net MVC - это противоречит принципам MVC.Представление не должно быть предметом, решающим, есть ли у пользователя разрешения или нет.Решение о том, является ли страница видимой, относится к уровню контроллера.
Лучший способ обработки разрешений - использование атрибута [Authorize]
на ваших контроллерах.Т.е.,
public MyController : Controller
{
[Authorize(Roles = "admin")] // Uses default FormsAuthentication
public ActionResult Index()
{
// ...
}
}
Вы можете написать свой собственный атрибут Authorize
, чтобы связать его с вашей пользовательской платформой:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class MyAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization( AuthorizationContext filterContext )
{
// ... authorization stuff here ...
}
}
Затем использовать его в своем действии контроллера:
public HomeController : Controller
{
[MyAuthorize]
public ActionResult Index()
{
// ...
}
}