Asp.net mvc 4 如何使用ASP.NET MVC 4强制用户登录以查看任何内容
我正在开发一个“ASP.NET MVC 4”应用程序,并使用“SimpleMembershipProvider”。该应用程序将在intranet中使用,未经授权的用户将没有可用的内容,因此我想在允许用户访问实际网站内容之前强制登录 我认为这应该是一个相当琐碎的任务,但这是我第一次必须实现这样的逻辑,我也想用Asp.net mvc 4 如何使用ASP.NET MVC 4强制用户登录以查看任何内容,asp.net-mvc-4,forms-authentication,simplemembership,Asp.net Mvc 4,Forms Authentication,Simplemembership,我正在开发一个“ASP.NET MVC 4”应用程序,并使用“SimpleMembershipProvider”。该应用程序将在intranet中使用,未经授权的用户将没有可用的内容,因此我想在允许用户访问实际网站内容之前强制登录 我认为这应该是一个相当琐碎的任务,但这是我第一次必须实现这样的逻辑,我也想用mvc4/simplemebrship风格来实现它,所以我寻求建议 我认为应该首先在web.config中添加以下内容: <authentication mode="Forms">
mvc4/simplemebrship
风格来实现它,所以我寻求建议
我认为应该首先在web.config中添加以下内容:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="15" slidingExpiration="true" enableCrossAppRedirects="false" protection="All" />
</authentication>
在我看来,这将是唯一允许匿名的行动。不过,我有点担心将默认路由更改为Login
,我不确定这是否会导致一些意想不到的缺点
我还想保留由MVC4 Internet模板创建的默认结构,只留下主控制器负责的索引
操作,但我不喜欢这种情况,因为逻辑是明确的-用户必须登录才能获得任何类型的访问,甚至Home/Index
是我心目中的一种访问方式
那么,如何实施这种行为呢?为了实现此权限,我应该执行哪些基本步骤和更改?您可以通过将Authorize
属性注册为全局筛选器来实现这一点。下面是您的RegisterGlobalFilters
方法的示例:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AuthorizeAttribute());
}
有了这个功能,您就必须允许匿名用户访问登录页面。为此,请使用AllowAnonymous
属性对登录操作方法进行注释
[AllowAnonymous]
[HttpGet]
public ActionResult Login()
{
...
}
对接收POST请求的登录操作方法执行相同的操作
[AllowAnonymous]
[HttpGet]
public ActionResult Login()
{
...
}