ASP.NET MVC实现登录后跳转到原界面的完整攻略如下:
- 首先,在需要登录才能访问的控制器或方法上添加[Authorize]特性。例如:
[Authorize]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
这样,当用户访问需要登录才能访问的页面时,系统会自动跳转到登录页面。
- 接下来,我们需要创建一个控器来处理用户登录的逻辑。在Controllers文件夹中,创建一个名为“AccountController.cs”的类。在这个类,我们需要定义和注销方法。以下是一个示例代码:
public class AccountController : Controller
{
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
[HttpPost]
public ActionResult Login(User user, string returnUrl)
{
// 这里可以根据实际情况从数据库或其他数据源中验证用户信息
if (user.Username == "admin" && user.Password == "password")
{
FormsAuthentication.SetAuthCookie(user.Username, false);
return RedirectToLocal(returnUrl);
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
return View(user);
}
}
public ActionResult Logout()
{
FormsAuthentication.SignOut();
return RedirectToAction("Index", "Home");
}
private ActionResult RedirectToLocal(string returnUrl)
{
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
}
在上面的代码中,我们定义了一个Login方法和一个HttpPost的Login方法。Login方法用于显示登录页面,HttpPost的Login方法用于处理用户提交的登录信息。在HttpPost的Login方法中,我们使用FormsAuthentication.SetAuthCookie方法来设置用户的身份验证票据,并使用RedirectToLocal方法来跳转回原来的页面。
- 接下来,我们需要创建一个视图来展示登录界面。在Views文件夹中,创建一个名为“Login.cshtml”的视图。在这个视图中,我们需要使用单来获取用户的用户名和密码,并将其提交到登录方法中。以下是一个示例代码:
@model User
<h2>Login</h2>
@using (Html.BeginForm("Login", "Account", new { returnUrl = ViewBag.ReturnUrl }, FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-group">
@Html.LabelFor(model => model.Username, htmlAttributes: new { @class = "control-label" })
@Html.EditorFor(model => model.Username, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Username, "", new { @class = "text-danger" })
</div>
<div class="form-group">
@Html.LabelFor(model => model.Password, htmlAttributes: new { @class = "control-label" })
@Html.EditorFor(model => model.Password, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Password, "", new { @class = "text-danger" })
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Login</button>
</div>
}
在上面的代码中,我们使用了Html.BeginForm方法来创建一个表单,并使用Html.EditorFor方法来生成用户名和密码输入框。我们还使用了ViewBag.ReturnUrl来保存原来的页面地址,并在表单提交时将其传递给HttpPost的Login方法。
- 最后,我们需要在Global.asax.cs文件中注册FormsAuthentication模块。在Application_Start方法中添加以下代码:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
// 注册FormsAuthentication模块
FormsAuthentication.Configure();
}
示例1:如果用户在未登录的情况下访问需要登录才能访问的页面,系统会自动跳转到登录页面。用户输入正确的用户名和密码后,系统会自动跳转回原来的页面。
示例2:如果用户在登录状态下访问需要登录才能访问的页面,系统会直接显示该页面,不会跳转到登录页面。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET MVC实现登录后跳转到原界面 - Python技术站