2009-10-29 178 views
2

在什么时候应该在我的mvc应用程序中检查我的cookie?基本上,我希望为每个请求执行的操作是检查是否存在cookie,如果是,则在屏幕上显示其姓名,如果没有,则页面要求用户登录后将其重定向到登录页面。自定义身份验证asp.net MVC

我不想使用FormsAuthentication,因为我希望创建和使用我自己的原型对象我只是不确定是否应该将它们设置在基本控制器类中或创建我自己的Authorize属性并执行检查在那里。

我最初的想法是,我应该在基本控制器类中这样做,因为它与web表单中的基本页面类似,我在其中重写oninit。

+0

你可能希望看到[ASP.Net MVC自定义身份验证](http://stackoverflow.com/q/1438151/148271) – IsmailS 2011-03-08 11:16:32

回答

3

不要尝试在基本控制器类中进行身份验证。在一个动作结果被缓存的情况下,你的动作根本不会运行,也不会有任何控制器被实例化。因此,authentication done inside the controller is broken by design

由于许多原因,定制身份验证的正确方法是创建自定义身份验证提供程序。我已经解释了为什么的原因,并给出了在上面链接的帖子中如何做到这一点的简单例子的链接。

总之,使用这种方法:

  • 具有模块化
  • 与高速缓存的适当水平
  • 作品与普通ASP.NET,以及与MVC
+0

创建我自己的提供程序句柄是否创建可通过Context.User访问的正确IPrincipal对象? 另外如何创建我自己的cookies并将它们与这个新的提供商链接? – Gazeth 2009-10-29 14:59:28

+0

你可以在自定义提供程序中完成所有这些工作,是的。 – 2009-10-29 15:27:10

+0

我在哪里照顾这一切,我已经找到了子类化成员提供者的例子,但是没有看到我会在哪里创建自己的cookie并创建自己的iprincpal对象的任何示例,您是否知道这个的任何示例。 – Gazeth 2009-10-29 16:02:36