Я хотел бы написать свой собственный OnCacheAuthorization
метод для asp.net mvc, чтобы контролировать доступ пользователей к сайту.
Я написал свою собственную систему регистрации, чтобы после входа в системуВы должны ввести еще несколько данных, пока учетная запись не будет авторизована (я контролирую это с помощью varibale).Поэтому, если пользователь не завершит процедуру, он не сможет посетить другие страницы сайта.
Я написал следующий метод:
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
var httpContext = filterContext.HttpContext;
String culture = HttpContext.Current.Session["Culture"].ToString();
var identity = httpContext.User.Identity;
MembershipUser userMembership = Membership.GetUser(identity.Name);
Guid userId = new Guid(userMembership.ProviderUserKey.ToString());
String redirectUrl = "~/" + culture + "/Error/UserRegistrationNotFinished";
httpContext.Request.Url.ToString();
filterContext.Result = new EmptyResult();
if ((!userMembership.IsApproved) && AuthorizeCore( filterContext.HttpContext ))
{
filterContext.HttpContext.Response.Redirect(redirectUrl, true);
}
else
{
filterContext.HttpContext.Response.Redirect(filterContext.RequestContext.HttpContext.Request.Url.ToString(),true);
}
}
Этот метод работает.Если пользователь не завершил процедуру входа в систему, он правильно перенаправляется на страницу UserRegistrationNotFinished
.Проблема в том, что если процедура входа в систему завершена, метод не позволяет ему перейти на страницу, которую он ввел в URL.Я получаю только пустую страницу, и метод зацикливается.
Как я могу написать этот метод, чтобы он также работал для одобренных пользователей?