2012-01-22 3 views
0

레코드 생성을위한 GET 동작이 있습니다. 페이지가 다소 동적이기 때문에 모델을 사용하여 데이터를 보유하지 않습니다. 나는 나중에 OAuth를 만들기 위해 나간다. 나중에는 화면을 만들 때만 돌아 간다. 데이터를 다시 전달하기 위해 쿼리 문자열로 리디렉션하고 있습니다. GET 동작에서 쿼리 문자열을 구문 분석 한 다음보기를 표시합니다. 문제는 쿼리 문자열이 브라우저에 표시된다는 것입니다. 의사 관련 데이터가 표시됩니다.쿼리 문자열 매개 변수 숨기기

데이터를 전송하기 위해 쿼리 문자열 만 사용하고 있으므로 쿼리 문자열이 브라우저에 표시되지 않도록 멀리 던질 수 있는지 궁금합니다.

그렇지 않으면 리디렉션하지 않고 다른 작업으로 이동할 수있는 방법이 있습니까? 나는 "다른"액션 메소드를 직접 호출하면 원래 액션의 뷰를 찾으려고한다는 것을 알았습니다. 나는 명시 적으로 return View(viewModel) 라인을 return View("create", viewModel)으로 바꿀 수 있지만 정말 더러워 보인다.

답변

2

POST 요청을 수락하기 위해 작업을 변경하는 것이 좋습니다. 적어도 이것은 중요한 정보가 브라우저에 나타나지 않도록합니다. 보안을 강화하려면 사이트가 SSL을 통해 제공되어야합니다.

시도 할 수있는 또 다른 방법은 민감한 값이나 전체 쿼리 문자열을 암호화하는 것입니다. 유일한 문제는 사용자가 로그인 할 것을 요구하지 않는 한 브라우저의 기록에도이 정보가 보존된다는 것입니다.

+0

POST로 리디렉션 할 수 없습니다. OAuth 프로세스가 돌아 오면 항상 GET을 사용합니다. POST를 통해 리디렉션 할 수있는 방법이없는 것 같습니다. 내부적으로 웹 요청을 만들 수는 있지만 ... 너무 복잡해 보입니다. –

0

조치 방법이 너무 많이하는 것처럼 보입니다. 인증/권한 부여는 별도의 관심사이며 작업 방법의 일부가 아니어야합니다. 인증 작업을 작업 필터로 옮기는 것이 좋습니다.

인증 속성을 확장하고 인증 작업을 수행하기 위해 OnAuthorization 메소드를 대체하는 클래스를 작성하십시오.

이렇게하면 컨트롤러 작업 메서드가 POST 요청을 받아들이도록 해제됩니다.

+0

OAuth는 사용자가 자신의 정보에 대한 액세스 권한을 다른 사이트에 부여 할 수있게 해주는 웹 표준입니다. 따라서 사용자의 Google 웹 로그 분석 데이터 또는 Twitter 데이터 또는 Facebook 데이터를 가져올 수 있습니다. 필자는 언제든지 서버에서 데이터를 가져올 수 있도록 새로 고침 토큰을 요청하고 있습니다. 사용자는 실제로 내 시스템에 인증하지 않습니다. 단지 데이터에 대한 액세스 권한을 부여하는 것입니다. –

+0

실제 컨트롤러 동작과 별개의 관심사가 아닌가요? 행동을 계속하기 전에 토큰이 필요한 것처럼 보입니다. 권한 부여 특성이 사용자 요구에 맞지 않으면 IActionFilter를 구현하여 이러한 작업을 수행 할 수 있습니다. – chandmk

+0

사용자가 이미 로그인되어 있습니다. 내 시스템에 대한 액세스를 시도하지 않고 데이터에 액세스하려고합니다. –

관련 문제