1 - Вы можете наследовать от [AuthorizeAttribute]
и настроить реализацию для маршрутизации на нужную Несанкционированную страницу.
Смотрите выбранный awnser это вопрос:
Перенаправление неавторизованного контроллера в ASP.NET MVC
2- Если вы загружаете частичные данные из вызова ajax (т. Е. $.Get(url)
или $("#somediv").Load(url)
), убедитесь, что действия, вызываемые url
, должным образом оформлены в соответствии с вашим пользовательским [AuthorizeAttribute]
.
В противном случае вам потребуется некоторая логика в ваших видах бритвы, чтобы проверить, аутентифицирован ли пользователь. Что-то вроде
@if (User.Identity.IsAuthenticated)
{
// Normal case
}
else
{
@Html.Partial("Login")
}
Где ваш частичный логин будет отображать желаемый вид входа в систему.
Обновление
Вы можете реализовать 2 разных атрибута, по одному для каждого сценария.
[AttributeUsage( AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false )]
public class IsUserAdminAttribute : CustomAuthorizedBaseAttribute
{
// Custom logic to redirect to admin logon partial/view
...
}
[AttributeUsage( AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false )]
public class IsAuthenticatedAttribute : CustomAuthorizedBaseAttribute
{
// Custom logic to redirect to basic/comment logon partial/view
...
}
[AttributeUsage( AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false )]
public abstract class CustomAuthorizedBaseAttribute : AuthorizeAttirbute
{
// Shared custom logic implementation
...
}
И вы можете использовать одно или другое, в зависимости от сценария, для украшения действий вашего контроллера.