2013-08-20 2 views
0
//custom authorization 
public class RedirectAuthorize : AuthorizeAttribute 
{ 
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 
     if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
     { 
       filterContext.Result = new RedirectToRouteResult(new 
       RouteValueDictionary(new { controller = "NotExist" }));    
     } 
    } 
} 

[RedirectAuthorize] 
public class SystemController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

// this method is inside AccountController 
[HttpPost] 
public ActionResult Login(User acc) 
{ 
    if(ModelState.IsValid) 
    { 
     if(WebSecurity.Login(acc.username, acc.password)) 
      return RedirectToAction("Index", "System"); 
    } 

    ModelState.AddModelError("IncorrectDetails", "Wrong details. Please try again."); 
     return View(acc); 
    } 
} 

이 코드를 내 PC에서 로컬로 실행하면 완벽하게 작동합니다. 로그인 할 수 있고 문제없이 로그 아웃 할 수 있으며 로그 아웃 할 때 SystemController에 액세스 할 수 없습니다. 정확히 내가 원하는 것.websec을 사용하여 로그인하면 로컬 호스트에서만 작동합니다.

하지만 도메인에 내 사이트를 게시 할 때 어떤 이유로 로그인 할 수 없습니다. 그것은 윈도우 내부의 자격 증명을 나에게 묻는다 :이 팝업은 우선 오는 이유

Window

내가 이해하지 않으며, 모든 두 번째는 그냥 사용자가 로그인으로하는 일반 <input type="text">으로 원하는 전지.

공개 버전은 데이터베이스 내에서 동일한 테이블과 데이터를 가지고 있습니다. 아무것도 그럴 것 같지 않습니다.

편집 : 나는 내 호스트에 SSL을 사용하지 않는 때문에

가 될 수 있을까?

Edit2가 :

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 

트릭을했다. 분명히 인증 모드를 설정해야합니다 :)

답변

1

서버에서 기본 인증 또는 Windows 인증을 사용할 수 있기 때문입니다. 두 대화 상자가 나타납니다. 양식 인증 및 익명 만 원할 경우

+0

기본/Windows 인증을 어떻게 비활성화 할 수 있습니까? 죄송합니다. 저는 이것에 익숙하지 않습니다. 나는 약간의 연구를 할 것이다. 내 웹 사이트는 양식 인증과 함께 작동합니다. – user1534664

+0

@ user1534664 - 서버에 IIS를 구성해야합니다. 사이트를 호스팅하는 위치에 대해 언급하지 않았으므로 어떻게 완료되었는지 알려주는 것이 어렵습니다. –

+0

그것의 ok 친구, 당신은 바른 길에서 나를 도왔다 :) 나는 그것을 이해했다! – user1534664

관련 문제