【发布时间】:2017-08-29 02:43:48
【问题描述】:
我刚刚了解了 ASP.NET MVC。我有一个具有以下场景的网站:
Login -> Main Page (Index) -> Edit Page (Edit)
所以,在LoginController用户登录时,它会重定向到main page并从MainPage编辑一条记录。
每次通过 ASP.NET MVC 创建新记录时,系统都会向经理发送一封电子邮件。在电子邮件消息中,有一个超链接会将经理重定向到编辑表单。但首先,他需要登录,因为除非他登录,否则无法打开编辑表单。 例如:
http://localhost:1212/Main/Edit/ID-001
我在MainController 中添加了Authorize Attribute。但它只适用于Main Page。所以即使我还没有登录,我也可以打开Edit Page。
这里是主控制器:
[Authorize]
public class MainController : Controller
{
string connString = @"Data Source=DESKTOP-FSET3FF,1433; Initial Catalog=INOVA_Data; User Id=sa; Password=Copoe113";
public ActionResult Index(string username)
{
if (Session["username"] != null)
{
string user = Session["username"].ToString();
SqlConnection conn = new SqlConnection(connString);
conn.Open();
string sqlQuery = @"select Animals, Gender from dbo.Animals where Pemilik = @user";
//string h = x => x.
SqlCommand cmd = new SqlCommand(sqlQuery, conn);
cmd.Parameters.AddWithValue("@user", user);
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
conn.Close();
return View(dt);
}
else
{
return RedirectToAction("Login", "Login");
}
}
public ActionResult Edit()
{
return View();
}
}
第二个问题,上面我写了我的网站场景,就是
Login-> MainPage (Index) -> EditPage (Edit)
基于电子邮件上的超链接,如何使应用程序重定向到 EditPage 而不重定向到 MainPage。
Login -> EditPage (Edit)
编辑第二个问题
简而言之,当用户尝试直接访问编辑视图时,应用程序会将用户重定向到登录视图。当heler登录成功时,应用程序会将用户重定向到编辑视图。
但是现在,当登录成功时,系统会将用户重定向到主视图。登录后如何让应用重定向到编辑视图?
【问题讨论】:
-
我认为您需要显示
Login控制器操作方法代码。如果在 URL 模式请求匹配Edit操作时使用RedirectToAction,您可以重定向到编辑页面。 -
我认为电子邮件超链接不包含在您的 MVC 项目中,对吗?您所需要的只是当用户从电子邮件中单击该超链接时,它将重定向到您的 mvc 项目,这里是
public ActionResult Edit()。或先登录。 -
当您使用默认的 ASP.NET MVC 项目模板时,该功能应该已经包含在开箱即用的范围内。您可以尝试在新的隐身或私人浏览器窗口中打开电子邮件中的链接吗?
-
1.在 Edit 方法上使用 [Authorize]。
标签: c# asp.net-mvc asp.net-mvc-4 authentication basic-authentication