Dav*_*vid 0 asp.net-mvc session action controller global-asax
我在Session_OnStart()调用中的global.asax文件中进行了此身份验证检查:
if (Session["Authenticated"] == null)
{
Response.Redirect("~/Login.aspx");
}
Run Code Online (Sandbox Code Playgroud)
这种会话身份验证在我们所有的Web应用程序中紧密耦合,因此我必须以这种方式使用它.这个global.asax位于一个较旧的Webforms项目中,我的MVC项目就位于该项目中.因此我认为它允许我直接访问我的控制器操作,例如http:// localhost/controller/action,而不会填充会话身份验证,即它没有重定向.我已经将这段代码添加到EACH控制器操作中来解决这个问题,但有没有办法在全局(而不是在global.asax中)设置它,这样我只需要为所有控制器操作调用一次?谢谢.
您应该创建一个所有控制器继承的基本控制器.然后你只需要在一个地方有逻辑.即:
public abstract class BaseController : ControllerBase
Run Code Online (Sandbox Code Playgroud)
然后,您可以在新的BaseContoller中使用initialize方法来执行通用逻辑.即
[编辑] - 改为OnActionExecuting,而不是Initialize.这不是最优雅的地方,因为我们正处于被调用视图的尖端.然而,这是一个起点.
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// you should be able to get session stuff here!!
base.OnActionExecuting(filterContext);
}
Run Code Online (Sandbox Code Playgroud)
并在每个控制器中:
public class AnotherNormalController : BaseController
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3192 次 |
| 最近记录: |