안녕하세요,모든 요청을 캐치하고 필요한 경우 합의가있는 페이지로 리디렉션 하시겠습니까?
최종 사용자가 계정을 만들 수있는 ASP.NET MVC 웹 사이트가 있습니다. 나는 그러나 그 (것)들이 logedin 동안이 위치에 다른 어떤 웹 페이지에 도착할 수 있으면 안된다 thay 로그인 및 만약에 아닙니다 그렇다면 동의를 처음으로주는 것이 그 (것)들을 필요로한다.
이 경우 가능합니까?
안녕하세요,모든 요청을 캐치하고 필요한 경우 합의가있는 페이지로 리디렉션 하시겠습니까?
최종 사용자가 계정을 만들 수있는 ASP.NET MVC 웹 사이트가 있습니다. 나는 그러나 그 (것)들이 logedin 동안이 위치에 다른 어떤 웹 페이지에 도착할 수 있으면 안된다 thay 로그인 및 만약에 아닙니다 그렇다면 동의를 처음으로주는 것이 그 (것)들을 필요로한다.
이 경우 가능합니까?
사용자 지정 권한 부여 특성을 만드는 것이 쉬운 방법입니다. 아래에서는 사용자가 인증되고 권한이 부여 된 경우 속성 검사를 승인하고, 그렇다면 db 확인을 통해 사용자가 확인되었는지 확인하고 개인 변수 isNotConfirmed
을 true로 설정하지 않으면 false를 반환합니다.
HandleUnauthorizedRequest
에는 인증 이유를 확인해야합니다. 실패한 경우 사용자가 확정 페이지로 리디렉션 할 수 있습니다.
public class CustomAuthorize : AuthorizeAttribute
{
bool isNotConfirmed = false;
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (base.AuthorizeCore(httpContext))
{
//if the user is not confirmed set isNotConfirmed true and return false;
isNotConfirmed = true;
// else return true;
}
return false;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (isNotConfirmed)
{
filterContext.Result = new RedirectResult("/Confirm");
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
}
가장 간단한 방법은 ASP.Net 멤버쉽 및 프로필 공급자를 사용하는 것입니다.
Membership Provider은 기본 사용자 인터페이스 (암호, 암호 재설정 등)를 관리 할 수있는 기본 인프라를 제공합니다.
Profile Provider은 store things about your users이며 회원 가입 여부에 관계없이 플래그를 포함 할 수 있습니다.
사용자가 로그인 할 때 프로필 제공자가 회원 계약서에 서명했는지 확인하십시오. 그렇지 않은 경우 해당 페이지로 리디렉션하십시오.
UPDATE 귀하의 코멘트에
을 바탕으로, 당신은 다음을 수행 할 수
편집 로그인 컨트롤러
그들이 계약에 서명 추가 역할에 할당
[HttpPost]
[AllowAnonymous]
public ActionResult Login(LogOnModel model, string returnUrl)
....
if (!userHasSignedTheAgreement)
{
return RedirectToAction("Account", "ViewToAcceptAgreement");
}
else if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
....
, 확인 된 사용자
그런 다음 액세스가 제한된 컨트롤러에 다음을 추가합니다.
이 속성은 사용자가 컨트롤러를 사용하려면 ConfirmedUser 역할에 있어야한다는 것을 강요합니다.
예, 이것은 이미 수행 한 작업입니다. 내가 알아야 할 것은 모든 요청을 가로 채고 사용자가 서명 또는 로그 아웃하도록하는 방법입니다. – Banshee
귀하의 의견을 토대로 업데이트되었습니다. –
캐싱 및 리디렉션과 관련하여 어떤 영향이 있습니까? – usr
다음 계정 만들기 페이지의 계약 부분을 확인하십시오. 필요한 경우 계정 정보를 입력하기 전에 계약서를 읽었다 고 말하는 버튼을 클릭하십시오. – Paparazzi
@usr : 죄송합니다. 제목이 변경되었습니다. – Banshee