ASP.NET MVC实现登录后跳转到原界面

  • Post category:C#

以下是“ASP.NET MVC实现登录后跳转到原界面”的完整攻略,包括实现登录功能、保存原界面URL、跳转到原界面等内容。

实现登录功能

在ASP.NET MVC中实现登录功能,您需要完成以下步骤:

  1. 创建一个登录页面,包括用户名和密码输入框、登录按钮等控件。
  2. 创建一个控制器,用于处理登录请求。
  3. 在控制器中编写代码,验证用户输入的用户名和密码是否正确。
  4. 如果验证通过,将用户信息保存到Session中,然后跳转到原界面。

以下是一个示例,演示如何在ASP.NET MVC中实现登录功能:

// LoginController.cs
public class LoginController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(string username, string password, string returnUrl)
    {
        if (username == "admin" && password == "123456")
        {
            Session["username"] = username;
            if (!string.IsNullOrEmpty(returnUrl))
            {
                return Redirect(returnUrl);
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            ViewBag.ErrorMsg = "用户名或密码错误";
            return View();
        }
    }
}

保存原界面URL

在ASP.NET MVC中,您可以使用returnUrl参数来保存原界面URL。当用户访问需要登录的页面时,您可以将当前页面的URL作为returnUrl参数传递给登录页面。如果用户登录成功,您可以将returnUrl参数的值作为跳转目标。

以下是一个示例,演示如何保存原界面URL:

// HomeController.cs
public class HomeController : Controller
{
    [Authorize]
    public ActionResult Index()
    {
        return View();
    }

    [Authorize]
    public ActionResult About()
    {
        return View();
    }

    [AllowAnonymous]
    public ActionResult Login(string returnUrl)
    {
        ViewBag.ReturnUrl = returnUrl;
        return View();
    }
}
<!-- Login.cshtml -->
@using (Html.BeginForm("Index", "Login", new { returnUrl = ViewBag.ReturnUrl }, FormMethod.Post))
{
    <div>
        <label>用户名:</label>
        <input type="text" name="username" />
    </div>
    <div>
        <label>密码:</label>
        <input type="password" name="password" />
    </div>
    <div>
        <input type="submit" value="登录" />
    </div>
}

跳转到原界面

在ASP.NET MVC中,您可以使用Redirect方法将用户重定向到原界面。如果用户在访问需要登录的页面时,未登录或登录已过期,您可以将用户重定向到登录页面,并将当前页面的URL作为returnUrl参数传递给登录页面。如果用户登录成功,您可以将returnUrl参数的值作为跳转目标。

以下是一个示例,演示如何跳转到原界面:

// LoginController.cs
public class LoginController : Controller
{
    [AllowAnonymous]
    public ActionResult Index(string returnUrl)
    {
        ViewBag.ReturnUrl = returnUrl;
        return View();
    }

    [HttpPost]
    [AllowAnonymous]
    public ActionResult Index(string username, string password, string returnUrl)
    {
        if (username == "admin" && password == "123456")
        {
            FormsAuthentication.SetAuthCookie(username, false);
            if (!string.IsNullOrEmpty(returnUrl))
            {
                return Redirect(returnUrl);
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            ViewBag.ErrorMsg = "用户名或密码错误";
            return View();
        }
    }
}
// HomeController.cs
public class HomeController : Controller
{
    [Authorize]
    public ActionResult Index()
    {
        return View();
    }

    [Authorize]
    public ActionResult About()
    {
        return View();
    }

    [AllowAnonymous]
    public ActionResult Login(string returnUrl)
    {
        ViewBag.ReturnUrl = returnUrl;
        return View();
    }

    [HttpPost]
    [AllowAnonymous]
    public ActionResult Logout()
    {
        FormsAuthentication.SignOut();
        return RedirectToAction("Index", "Home");
    }
}
<!-- Login.cshtml -->
@using (Html.BeginForm("Index", "Login", new { returnUrl = ViewBag.ReturnUrl }, FormMethod.Post))
{
    <div>
        <label>用户名:</label>
        <input type="text" name="username" />
    </div>
    <div>
        <label>密码:</label>
        <input type="password" name="password" />
    </div>
    <div>
        <input type="submit" value="登录" />
    </div>
}

现在,您已经成功地在ASP.NET MVC中实现了登录功能,并可以跳转到原界面了。