我不知道我在问一个有效的问题。我正在开发MVC Web应用程序。在这里,我有Home/Index
方法。当我运行该网站时,它会在url
中显示http://localhost:25537/,指向Home/Index
方法。在Index
页面上,我展示了一些横幅和其他一些内容。当我当时登录我的网站时,我想要转到相同的网页,即http://localhost:25537/
,指向Home/Index
,但内容应该更改。
这是我的routeconfig
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Account", action = "Index", id = UrlParameter.Optional }
);
如何实施此类view
?如何路由到同一页面但内容应该更改?
如果我在Request.IsAuthenticate
页面中使用Index
,则会在登录后显示。但我有一个疑问。此Home/index
定义为[AllowAnonymous]
,但登录后应为[Authorize]
。
答案 0 :(得分:2)
如果我在“索引”页面中使用
Request.IsAuthenticate
,则会在登录后显示。
这就是你如何做到的。在您的视图中,您可以将经过身份验证的内容包装在检查中。类似的东西:
<div>
public content
</div>
@if (Request.IsAuthenticated)
{
<div>
authenticated-only content
</div>
}
当且仅当提出请求的用户经过身份验证时,该内容才会传递给客户端。
此主页/索引定义为
[AllowAnonymous]
但登录后应为[Authorize]
。
不,不应该。索引操作仍允许匿名访问。它返回的视图只包含一些不为匿名用户显示的部分。但是这些用户仍然可以请求操作本身。
答案 1 :(得分:0)
如果您的控制器操作使用[Authorize]
属性修饰,则无关紧要。该属性仅检查是否允许您在不登录的情况下查看页面。
因此,在您看来,您只需使用:
@if(Request.IsAuthenticated){
// some Stuff you want to show if the user has logged in
}