나는 사용자 인증이 인증을 위해 꽤 잘 작동mvc C# URL을 변경하면 다른 사용자로 로그인하게되는데 어떻게 방지 할 수 있습니까?
Home Controller:
------------------
[AllowAnonymous]
[HttpPost]
public JsonResult JsonLogin(SecurityDTO usr)
{
var cnt = _ipres.CheckLoginCount(usr);
if (cnt == 1)
{
var logDet = _ipres.GetUser(usr);
if (logDet != null)
{
var dto = new SecurityDTO
{
Id = logDet.Id,
UserName = logDet.username,
Password = logDet.password,
Email = logDet.Emailid,
UTID = logDet.UTID,
};
Session[USER] = dto;
}
if (logDet != null)
{
switch (logDet.UTID)
{
case 1:
Session["UType"] = "admin";
return Json(new { success = true, redirect = Url.Action("Index", "Admin", new { area = "Admin" }) });
case 2:
Session["UType"] = "user";
return Json(new { success = true, redirect = Url.Action("Index", "User", new { area = "User" }) });
case 3:
Session["UType"] = "client";
return Json(new { success = true, redirect = Url.Action("Index", "Client", new { area = "Client" }) });
default:
Session["UType"] = null;
break;
}
}
}
else
{
ModelState.AddModelError("", "Invalid Username or Password");
}
return Json(new { errors = GetErrorsFromModelState() });
}
Base Controller:
------------------
public SecurityDTO UDTO { get; set; }
protected override void OnActionExecuting(ActionExecutingContext act)
{
if (Session["UType"] != null)
{
UDTO = (SecurityDTO)Session[HomeController.USER];
base.OnActionExecuting(act);
}
else
act.Result = RedirectToAction("Index", "Home", new { area = "" });
}
에 대해 다음 코드를 사용하고 있습니다. 로그인 성공 후 사용자 유형에 따라 사용자를 지역으로 리디렉션합니다. 지역의 모든 컨트롤러는 기본 컨트롤러를 구현합니다. 최근에 나는 이유를 이유로이 효과가 없다고 판결했다. 사용자로 로그인하면 내 URL은 ~/AppName/User/User/ViewName이됩니다. 하지만 URL을 변경하고 ~/AppName/Admin/Admin/ViewName으로 변경하면 관리자가 아닐지라도 해당 페이지로 이동합니다. 나는 여전히 사용자로 로그인되어 있지만 모든 관리 기능에 액세스 할 수 있습니다. 기본적으로 url에서 사용자 유형을 변경하면 해당 사용자 유형으로 간주됩니다. 그러나 URL 변조가 이와 같이 발생하면 사용자를 로그인 페이지로 리디렉션 할 수 있습니다. 기본 컨트롤러의 사용자 유형 변경을 인식하고 사용자를 로그인 페이지로 리디렉션하는 것과 같은 작업을 수행 할 수 있습니까? 이 일을 올바른 방법을 보여주십시오 ... 미리 감사드립니다. 사용자가 그 리디렉션 다른 페이지로 권한을가 있는지 확인할 경우
감사에서 봐 가지고,하지만 난 방지하기 위해 기본 컨트롤러에 할 수있는 일이있다 페이지 수준 인증? UDTO는 사용자가 속한 레벨을 알려줍니다. 나는 그가 접근하고자하는 레벨 페이지를 알 필요가있다. 관리자 인 경우 로그인 페이지가 표시됩니다. 기본 컨트롤러에서 Route 매개 변수 또는 URL 경로를 가져 와서 자체 권한을 부여 할 수 있습니까? 미리 감사드립니다. – Kittu