나는 (C#으로 개발 된 ASP.NET에서 개발 된) 웹 사이트에서 일하고있다. 나는이 사이트를 통해 일하고 있어요, 나는 사이트의 많은 부분이 코드의이 유형이주의 사항 :이 모든 일반적으로 (를 Page_Load 메서드에서) 사이트의 코드 숨김에서 이루어집니다컨트롤을 웹 보안의 형태로 숨김, 더 나은 방법?
EmailLabel.Visible = false;
WhateverButton.Visible = false;
AnotherControl.Visible = false;
...
. 본질적으로 이것은 로그온하지 않은 사용자가 구성 요소에 액세스하지 못하도록하기위한 것입니다 (사이트에 대한 규칙은 로그인하지 않은 사용자가 로그인 할 때까지 사이트의 어떤 부분도 볼 수 없도록해야한다는 것입니다). 위의 방법이 일 경우 ...하지만 사용자가 로그인되어 있는지 항상 확인하고 모든 구성 요소의 올바른 상태로 전환해야하는 것은 비용이 많이 드는 것처럼 보입니다.
이 문제에 접근 할 수있는 다른 방법이 있습니까? 그것/연구에 대해 생각할 때부터 사용자가 로그인하지 않으면 홈 페이지로 리다이렉션을 할 수있는 방법이있을 것이라고 생각했습니다. 심지어, 어떤 것을 위해 기본 페이지를 확장 할 수도 있습니다. 기본 페이지를 확장하는 페이지. 그러나이 분야에 대한 지식은 제한적이므로 제 제안은 효과가 없을 수 있습니다.
무엇을 제안 할 수 있습니까? 더 나은 점이 있나요? 거기에 무엇이 충분합니까?
이 접근법은 대부분의 상황에서 권장되는 반면 더 빠를 수는 없습니다. 일부 부울 변수를 설정하면 브라우저에 301 왕복을 발행하는 오버 헤드에 가깝게 할 수 있습니까? 수백 밀리 초의 프로세서 대기 시간과 네트워크 대기 시간의 나노초와 서버가 여러 브라우저 요청을 처리하고 있습니다. 그리고 Response.End()는 ThreadAbortException을 던져서 자신의 오버 헤드를 발생시킵니다. – womp
다만 명확하게하기 위하여 - * 단 * 인증 된 접근을 요구하는 페이지를 보호하는 것은 확실히 이런 방식으로 이루어져야합니다. 나는 OP가 이것을 필요로하든 그렇지 않든간에 분명하지 않다. – womp
이 방법이 더 빠르다는 이유는 OnInit을 호출 한 후 Page-Cycle 메서드를 호출하지 않기 때문입니다. CPU 시간을 많이 절약 할 수 있습니다. 또한 모든 의도와 목적을 위해 사용자가 로그인하지 않은 경우 추가 라운드 트립 및 이와 관련된 시간이 예상됩니다. – TJMonk15