Я пытаюсь сделать это проще для разработчика,
Поскольку существует несколько вариантов аутентификации, и не все страницы требуют аутентификации или полной аутентификации.
В WebForms я могу иметь общую страницу,
Теперь каждая страница наследует GenericPage, и нужно только реализовать AuthorizationType (см. Код ниже)
Могу ли я сделать что-то похожее с Razor?
Или, может быть, я должен что-то совсем другое ...
Вот код в WebForms:
public class GenericPage : Page
{
public enum AuthorizationType
{
Users = 1,
AuthUsers = 2,
Admins = 4
}
public virtual bool IsAuth()
{
return Authenticator.IsAuth();
}
public virtual bool IsAdmin()
{
AuthUser authUser = Authenticator.GetAuthenticatedUser();
return (authUser != null && authUser.IsAdmin)
}
protected abstract AuthorizationType Authorization
{
get;
}
protected virtual string OnAuthorizationFailedUrl
{
get
{
return HomePageUrl;
}
}
protected void CheckAuthentication()
{
if (!IsUserAuthroized())
Response.Redirect(OnAuthorizationFailedUrl);
}
protected bool IsUserAuthroized()
{
AuthorizationType authorization = Authorization;
return (Authorization.Contains(AuthorizationType.Users) ||
(Authorization.Contains(AuthorizationType.AuthUsers) && IsAuth()) ||
(Authorization.Contains(AuthorizationType.Admins) && IsAdmin()));
}
override OnPageLoad()
{
CheckAuthentication();
}
}
Заранее спасибо.