2014-10-16 3 views
1

MVC에 익숙하지 않아 메인 인덱스 페이지와 다양한 서브 페이지 (모든 사용자가 로그인해야 함) 및 로그인/등록 페이지로 프로젝트를 만들려고합니다. 그것은 모두를위한 진입 점입니다.MVC 4 권한 부여 및 로그인 사용

내가 확인하고 세션 변수가 만료 될 때 또는 직접 다른 페이지에 액세스 할 때 로그인 페이지로 사용자를 리디렉션하는 방법을 찾고 있었다, 나는이 일을 해요 :

[Authorize] 
public class HomeController : Controller 
{ 
} 

의 Web.config :

<system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Home/Login" timeout="2880" /> 
    </authentication> 
</system.web> 

그리고 사용자가 로그인하지 않은 경우, 그들은 ~/Home/Login로 리디렉션하고 있지만 나는 이런 일이 생각하지 않습니다 나는 오류를 받고 있어요 것으로 기대하고 있습니다 이 페이지들은 사용자 이름을 표시하기 위해 세션 변수를 사용하려고하기 때문에 나는 사용자 정의 인증, 로그인 등을 구현하는 방법에 대한 다양한 솔루션을 발견했습니다

//after I found the user in my database and confirmed his password 
FormsAuthentication.SetAuthCookie(user.userName, false); 

Session["User"] = user; 
return View("Index"); 

,하지만 난 그 해결책이 있는지 모르는 : 로그인 코드에서 페이지 등

에, 나는이 이 MVC 버전에서 이미 사용 가능합니다 (4.0 사용). 아직 배우기 때문에 가능한 한 가장 간단한 방법으로 유지하고 싶습니다.

그래서 기본적으로 사용자가 모든 페이지가 아닌 로그인 페이지에 로그인했는지 확인하고, 로그인 페이지가 아닌 경우 로그인 페이지로 리디렉션하고 싶습니다.

MVC 기능을 사용하여 어떻게하면됩니까?

답변

1

로그인 액션 메서드에서 [AlloyAnonymous]로 장식해야합니다. 인증/권한 부여에서 Session 개념을 삭제하십시오. 세션에 사용자 객체를 저장할 필요가 없으며 이미 HttpContext에 저장됩니다.

+0

자세히 설명해 주시겠습니까? 나는 한 가지 방법이 모든 컨트롤러/메소드가 자동으로 권한이 부여 된 것으로 설정되었다는 것을 설명하는 가이드를 보았고 대신 익명으로 호출 할 수있는 항목을 지정했지만이 위치를 설정할 수는 없습니다. – Danicco

+0

내가 언급 한 속성에 의해 익명으로 허용되는 메소드를 설정합니다. 반대로 인증을 요구하는 메소드를 지정하려면 [Authorize ("ADMINS")] –

+0

아와 같이 필요한 역할과 함께 [Authorize] 속성을 사용하십시오. 구성 할 필요가 없습니다 ... 좋습니다. 나는 여전히 문제가 있지만, 내 라우팅 구성은 "색인"기능의 기본값입니다. 내'Home'은'[Authorize]'속성을 가진'Index'를 가지고 있는데, 내 web.config에 지정된대로'~/Home/Login'에 사용자 (기록되지 않은)를 보내고 싶습니다. 작업 중입니다 ...'[Authorize]'가 작동하지 않는 것처럼'Index' 함수를 통해 진행됩니다. 왜 이런 일이 일어 났는지 알아? – Danicco