특정 세션 데이터가 존재하는지 확인하는 컨트롤러에 대한 대체 기능이 있습니다. 이 데이터는 저장소가 올바르게 작동하는 데 필요하므로 존재하지 않으면 사용자가 로그 오프해야합니다.컨트롤러에서 리디렉션 초기화가 작동하지 않음
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
if (Session["CompanyID"] != null)
{
repo.CompanyID = (long)Session["CompanyID"];
}
else
{
RedirectToAction("LogOff", "Account");
}
}
내 코드는 다음과 같습니다,하지만 RedirectToAction가 호출되는 경우에도 컨트롤러는 여전히 기본 동작을 열고 사용자가 로그 오프되지 않습니다. 이 문제를 해결하는 방법을 권장 할 수 있습니까?
나는이 세션 데이터를 이런 방식으로 사용하고 있는데, 내가 알 수있는 첫 번째 장소이기 때문에 여기에 나와 있습니다.이 특정 데이터가 있는지 확인할 수 있습니다. 사용자 로그인시 작성됩니다.
이 데이터는 데이터베이스의 사용자의 일부입니다. 맞춤 멤버십 및 역할 공급자를 만들었습니다. 이 데이터를 MembershipUser 유형의 "User"에 추가하여 사용자 username과 같은 생성자에서 액세스 할 수 있습니까?
나는이 원리를 이해하지만 조금 비현실적 인 것처럼 보인다. 나는 공개적인 영역의 어플리케이션이 있기 때문에 그것을 글로벌 필터로 만들지 못한다. 그런 다음 그것을 필요로하는 영역 내부의 모든 액션에 적용해야만 하는가? 초기화 후 다른 컨트롤러의 다른 동작으로 컨트롤러의로드를 끊는 다른 방법이 있습니까? – Zaak
컨트롤러에 속성을 적용 할 수 있으며 해당 컨트롤러 또는 컨트롤러 기본 클래스 내의 모든 작업에 적용되며 모든 파생 클래스 작업에도 작업이 적용됩니다! –
흠,이 방법은 아직 한 번 설정해야한다는 사실을 해결하지 못합니다. 이 방법으로 FilterAttribute를 통해 일을하는 것은 컨트롤러가 인스턴스화 될 때만 액션이 실행될 때마다 설정하는 것 같습니다. – Zaak