//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을 사용하여 로그인하면 로컬 호스트에서만 작동합니다.
하지만 도메인에 내 사이트를 게시 할 때 어떤 이유로 로그인 할 수 없습니다. 그것은 윈도우 내부의 자격 증명을 나에게 묻는다 :이 팝업은 우선 오는 이유
내가 이해하지 않으며, 모든 두 번째는 그냥 사용자가 로그인으로하는 일반 <input type="text">
으로 원하는 전지.
공개 버전은 데이터베이스 내에서 동일한 테이블과 데이터를 가지고 있습니다. 아무것도 그럴 것 같지 않습니다.
편집 : 나는 내 호스트에 SSL을 사용하지 않는 때문에
가 될 수 있을까?
Edit2가 :
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
트릭을했다. 분명히 인증 모드를 설정해야합니다 :)
기본/Windows 인증을 어떻게 비활성화 할 수 있습니까? 죄송합니다. 저는 이것에 익숙하지 않습니다. 나는 약간의 연구를 할 것이다. 내 웹 사이트는 양식 인증과 함께 작동합니다. – user1534664
@ user1534664 - 서버에 IIS를 구성해야합니다. 사이트를 호스팅하는 위치에 대해 언급하지 않았으므로 어떻게 완료되었는지 알려주는 것이 어렵습니다. –
그것의 ok 친구, 당신은 바른 길에서 나를 도왔다 :) 나는 그것을 이해했다! – user1534664