인증 된 사용자가 내 사이트에 대한 활성 멤버십을 가지고 있는지 확인해야합니다. 예를 들어 사용자의 회원이 활성화 된 경우 사이트의 "회원 전용"영역을 자유롭게 탐색 할 수 있지만 회원이 비활성화되거나 만료 된 경우 자동으로 웹 사이트의 청구 영역으로 리디렉션됩니다. 특정 제한된 페이지 만 볼 수 있습니다..NET MVC에서 활성 멤버 자격 유효성 구현
사용자의 회원 만료일을 FormsAuthentication 쿠키에 저장하여이 문제를 해결하려고합니다. 사용자 지정 MembershipProvider를 사용하고 있으며 사용자 ID를 이미 쿠키에 저장하고 있으므로 쉽게 할 수 있습니다. 인증 쿠키는 24 시간 내에 만료되도록 설정됩니다. 그럼 난과 같이, 사용자 정의 AuthorizeAttribute
를 사용하여 회원이 활성화되어 있는지 여부를 확인합니다 :
public class MembershipAuthorizeAttribute : AuthorizeAttribute
{
private readonly bool authorizeMembership;
public MembershipAuthorizeAttribute()
{
this.authorizeMembership = true;
}
public MembershipAuthorizeAttribute(bool authorizeMembership)
{
this.authorizeMembership = authorizeMembership;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (this.authorizeMembership)
{
// Code to validate the membership hasn't expired
}
return base.AuthorizeCore(httpContext);
}
}
그럼 난 그냥 같은 내 컨트롤러를 장식 할 수 있습니다
[MembershipAuthorize]
public class ActiveMembersController : Controller
{
// Only users with an active membership can access this controller
}
[MembershipAuthorize(false)]
public class BillingController : Controller
{
// All members can access this controller
}
이 걸릴 수있는 좋은 방법이거나 거기에 사용자의 회원이 활성 여부를 확인하는 청소기/더 바람직한 방법은? 나는 사용자의 회원 만료일이나 상태를 검색하기 위해 모든 요청에서 데이터베이스를 치는 것을 선호하지 않으므로이 값을 쿠키에 저장하려고합니다. 또한 FormsAuthentication 쿠키에이 값을 저장하는 것이 좋습니까? 아니면이 값을 다른 쿠키에 저장해야합니까?