ASP.NET MVC4重定向到登录页面
我正在使用ASP.NET MVC 4和C#创建一个Web应用程序。
我想在使用应用程序之前登录所有用户。
我正在使用ASP.NET Membership与自定义数据库。
一种方法是检查Membership.GetUser()
在每个函数中是否为null。
但是,没有比在每个函数中检查用户登录状态更简单的方法吗? (也许检查web.config,global.asax等…… ??)
当然,使用[Authorize]
装饰你的动作或整个class级,它将要求用户首先登录。
将[Authorize]
放在您希望仅登录用户访问的每个操作上。 您也可以在控制器级别执行此操作,使控制器内的所有操作都受到保护。 后者可能最适合您,因为您可能只希望为访客禁用所有页面。
这是类级别的样子:
[Authorize] public class SomethingController { //... }
这是一个行动级别的:
public class SomethingController { [Authorize] public ActionResult SomeAction(Parameter someParameter) { //... } }
另一种方法是,如果您的所有或大多数页面都使用相同的母版页,则应该:
在母版页中。 这样,如果用户未登录,则使用该母版页的所有页面都将重定向到其他位置。但这仅适用于您使用内置身份validation的情况。 注意:此选项远不如第一个选项安全。 仅在站点安全性不是一个大问题时才使用此选项
您可以编写自定义[Authorize]
属性。 然后简单地用它来装饰控制器/动作,或者如果所有动作都需要授权,你可以将它注册为全局动作filter。
您可以将[Authorize]
属性放在控制器上或控制器中的单个方法中,这样您就可以选择谁可以打开操作以及具有哪些权限。 您还可以使用以下角色进行授权: [Authorize(Roles="Admin")]
,您将仅授权管理员角色的用户访问您的操作/控制器。 例如:
[Authorize(Roles="SimpleUser")] or with no roles [Authorize] public ActionResult Index() { return View(); } [Authorize] [HttpPost] public ActionResult Index(FormCollection form) { ... whatever logic return View(); }
希望这可以帮助 ;]
我知道这个问题已经有了答案,但如果打算锁定整个应用程序,除了少数控制器操作,那么我觉得这是一个更好的解决方案……
在你的应用程序的启动/初始化中添加…
httpConfig.filters.Add(new AuthorizeAttribute());
……那么你想要保护的行动……
[AllowAnonymous] public ActionResult Hello() { return View(); }
在class级使用[授权]
如果您想允许匿名访问某些操作,请使用[AllowAnonymous]
上述就是C#学习教程:ASP.NET MVC4重定向到登录页面分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1012395.html