Ler*_*ica 6 forms-authentication asp.net-mvc-4 simplemembership
我正在研究'ASP.NET MVC 4'应用程序并使用'SimpleMembershipProvider'.该应用程序将在Intranet中使用,并且没有可供未授权用户使用的内容,因此我想在让用户访问实际站点内容之前强制登录.
我认为这应该是一项相当简单的任务,但这是我第一次实施这样的逻辑,而且我也希望这样做,MVC 4/SimpleMemebrship所以我寻求建议.
我认为应该实现的方式是首先在web.config中添加它:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="15" slidingExpiration="true" enableCrossAppRedirects="false" protection="All" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
毕竟我不会采取允许匿名的行动所以我认为最好把它放在这里.
并将我的默认路由更改为:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
在我看来,这将是唯一允许匿名的行动.但是我有点担心将默认路由更改为Login我不确定这是否会导致一些意想不到的缺点.
我也有想法保留由创建的默认结构MVC 4 Internet Template,只是让控制器的Index动作Home承担责任,但我不喜欢这种情况,因为逻辑很清楚 - 用户必须登录才能获得任何类型的访问,甚至Home/Index在我的脑海中有一些访问权限.
那么实现这种行为的方式是什么?为实现这一目标,我应该采取哪些基本步骤和变更?
Uro*_*jat 19
您可以通过将Authorize属性注册为全局过滤器来实现此目的.Bellow是您的RegisterGlobalFilters方法应如何显示的示例:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AuthorizeAttribute());
}
Run Code Online (Sandbox Code Playgroud)
有了这个,您将不得不允许匿名用户访问登录页面.为此,您需要使用AllowAnonymous属性注释Login操作方法.
[AllowAnonymous]
[HttpGet]
public ActionResult Login()
{
...
}
Run Code Online (Sandbox Code Playgroud)
对接收POST请求的Login操作方法执行相同操作.
| 归档时间: |
|
| 查看次数: |
11469 次 |
| 最近记录: |