我正在使用ASP.NET MVC3并拥有一个非常简单的网站,只允许您登录/创建帐户或列出您的帐户详细信息。
我想要制作主页..基本上就是这样。如果您尚未登录,请让他们登录或创建新帐户。否则,请向他们显示其帐户详细信息简单。
所以我不确定我是否应该这样做......
public ActionResult Index()
{
return User.Identity.IsAuthenticated ? View("Show") : View("Index");
}
这是一个非常人为的例子,但它基本上描述了我的问题。
我觉得这不是一个好方法..但我应该重定向到另一种方法......就像真正的Show? ..例如。 / Show / UserFoo ????
我只是不确定人们在做什么 - 这是一个常见的模式。
思想?
答案 0 :(得分:6)
您可以使用[Authorize]
属性检查用户是否经过身份验证,如果没有重定向到登录页面。
[Authorize]
public ActionResult Index()
{
return View();
}
如果您不喜欢默认行为,也可以编写自定义授权属性。
答案 1 :(得分:1)
我会说,不。主要是因为这样可以帮助您保持干爽,以防您希望在两者之间有共同的内容。
而是在视图中检查某人是否经过身份验证。
Razor(干代码):
@if (User.Identity.IsAuthenticated) {
Welcome back, @User.Identity.Username!
} else {
Please <a href="/login">login</a>!
}
我认为这有助于保持干燥。
答案 2 :(得分:-2)
使用LoginView项:
<asp:LoginView runat="server">
<LoggedInTemplate>
// this is seen by users who are authenticated, so display info
</LoggedInTemplate>
<AnonymousTemplate>
// this is seen by users not authenticated - so display login form
</AnonymousTemplate>
</asp:LoginView>
您需要管理身份验证的内容,[Authorize]
属性可以为您执行此操作,或者您可以编写自己的自定义实现。