Mah*_*asi 23 c# asp.net-mvc asp.net-mvc-4
我正在使用ASP.NET MVC 4和C#创建一个Web应用程序.
我想在使用应用程序之前登录所有用户.
我正在使用ASP.NET Membership与自定义数据库.
一种方法是检查Membership.GetUser()每个函数中是否为null.
但是,没有比在每个函数中检查用户登录状态更简单的方法吗?(也许检查web.config,global.asax等...... ??)
Bli*_*ndy 50
当然,装饰你的动作或整个班级,[Authorize]它将要求用户首先登录.
Phi*_*idt 12
将[Authorize]您希望仅登录用户访问的每个操作置于其后.您也可以在控制器级别执行此操作,使控制器内的所有操作都受到保护.后者可能最适合您,因为您可能只希望为访客禁用所有页面.
这是类级别的样子:
[Authorize]
public class SomethingController
{
//...
}
Run Code Online (Sandbox Code Playgroud)
这是一个行动级别的:
public class SomethingController
{
[Authorize]
public ActionResult SomeAction(Parameter someParameter)
{
//...
}
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是,如果您的所有或大多数页面都使用相同的母版页,则应该:
<script type="text/javascript>
@if(!Request.IsAuthenticated) {
window.location.href = redirectURL;
}
</script>
Run Code Online (Sandbox Code Playgroud)
或者如果你不使用剃刀语法,
<script type="text/javascript>
<% if(!Request.IsAuthenticated) { %>
window.location.href = redirectURL;
<% } %>
</script>
Run Code Online (Sandbox Code Playgroud)
在母版页中.这样,如果用户未登录,则使用该母版页的所有页面都将重定向到其他位置.但这仅适用于您使用内置身份验证的情况. 注意:此选项远不如第一个选项安全.仅在站点安全性不是一个大问题时才使用此选项
我知道这个问题已经有了答案,但如果目的是锁定整个应用程序,除了少数几个控制器操作,那么我觉得这是一个更好的解决方案......
在您的应用程序的启动/初始化中添加...
httpConfig.filters.Add(new AuthorizeAttribute());
Run Code Online (Sandbox Code Playgroud)
...然后在你的行动不希望保护...
[AllowAnonymous]
public ActionResult Hello() { return View(); }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39488 次 |
| 最近记录: |