웹 사이트의 주요 주문 부분으로 이동하기 전에 사용자가 로그인해야하는 일종의 주문 시스템을 구축하고 있습니다. 예를 들어, 사용자가 데이터베이스에있는 경우 세션에 ID와 UserName을 할당하는 로그인 컨트롤러가 있습니다.
public ActionResult Login(AccountAccess userObj)
{
if (ModelState.IsValid)
{
using (SC_DBEntities db = new SC_DBEntities())
{
var accountObj = db.Users_Account.Where(u => u.Account_UserName.Equals(userObj.Account_UserName)).FirstOrDefault();
if (accountObj != null)
{
var accessObj = db.Users_Access.Where(a => a.Account_ID.Equals(accountObj.Account_ID) && a.Access_Password.Equals(userObj.Access_Password)).FirstOrDefault();
if (accessObj != null)
{
Session["Account_ID"] = accountObj.Account_ID.ToString();
Session["Account_UserName"] = accountObj.Account_UserName.ToString();
return RedirectToAction("Index", "Home");
}
}
}
}
return View(userObj);
}
여기서 내가 원하는 것은 해당 Session이 null 인 경우 다른 메서드 작업에 대한 액세스를 차단하는 것입니다. 예를 들어 제품 페이지에 액세스하고 싶지만 로그인하지 않은 경우 로그인 페이지로 리디렉션됩니다.
아직 ASP.NET을 처음 접하는 사람이므로 세션 외에이 효과를 더 효율적으로 얻을 수있는 방법이 있다면 알려 주시기 바랍니다.
ActionFilterAttribute를 사용할 수 없습니까?
public class CheckSession: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var MySession = HttpContext.Current.Session
if(MySession["Account_ID"] == null || MySession["Account_UserName"]== null)
{
filterContext.Result = new RedirectResult(string.Format("/Account/"));
}
}
}
그런 다음 컨트롤러 액션에 배치하기 만하면됩니다. 컨트롤러에 배치하여 해당 컨트롤러 내부를 모두 확인할 수도 있습니다.
[CheckSession]
public ActionResult Purchase()
{
....
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다