【发布时间】:2013-12-01 16:04:16
【问题描述】:
我正在开发一个 ASP.Net MVC 网站,其预期的路由行为类似于 Facebook
当用户未登录并访问该站点时,他会在下面显示欢迎页面
www.domain.com/
如果他登录,我们希望他访问网站内容仍在
www.domain.com/
我应该如何定义路线?
编辑:按照说明进行更多说明
如果用户登录,我想提供不同的索引操作,如果他没有登录,则提供不同的操作。
一种行不通的方法
[Authorize]
public ActionResult Index()
{
return View();
}
[AllowAnonymous]
public ActionResult Index()
{
return View();
}
所以使用两个不同的索引操作默认路由
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }
会按照我的意愿执行。
【问题讨论】:
-
你不需要定义路由;这是一个控制器问题。路线将是相同的。您正在寻找 [Authorized] 属性或希望使用
IPrincipal并基于它执行一些工作流。 addisagile.wordpress.com/2012/12/09/… -
我知道 [Authorized] 和 IPrincipal。像这样的问题代码无效 [Authorize] public ActionResult Index() { return View(); } [AllowAnonymous] public ActionResult Index() { return View();根据用户是否登录,我需要不同的索引操作
-
该代码应该进入您的问题。看来您没有给我们足够的帮助。
-
你不能有两个控制器动作命名相同的东西。您将不得不只允许每个人点击该控制器操作,然后在控制器操作内部进行处理以将所有未授权的人踢出 - 或者您需要创建自己的自定义授权属性,该属性源自 @ 987654327@ 并让它将未登录的人重定向到“您未登录”体验。
-
我要做的是使用 Session...当用户登录时创建一个 Session.Like Session["sessionname"]=userName; then If(Session["sessionname"]==null){ return RedirectToActoin("yourAction")} else 返回你想要的操作
标签: asp.net-mvc asp.net-mvc-routing