在Asp.NET MVC中为用户登录使用操作筛选器?

在Asp.NET MVC中为用户登录使用操作筛选器?,.net,asp.net-mvc,action-filter,.net,Asp.net Mvc,Action Filter,我最近用Asp.Net建立了一个网站 我选择的实现用户登录的方式是通过一个基本的'UserAwareController'类,所有控制器都扩展该类。它包含对UserRepository的引用,并公开了一个受保护的GetCurrentUser()方法,具体的控制器可以查询该方法 整个过程让我觉得有点无力。行动过滤器是一个好的选择吗?它的好处是什么?还有什么我可能遗漏的吗?我看不出你目前的方法有任何错误,除非你只是为了这个目的而制作了UserAwareController。但是,使用动作过滤器将用户

我最近用Asp.Net建立了一个网站

我选择的实现用户登录的方式是通过一个基本的
'UserAwareController'
类,所有控制器都扩展该类。它包含对
UserRepository
的引用,并公开了一个受保护的
GetCurrentUser()
方法,具体的控制器可以查询该方法


整个过程让我觉得有点无力。行动过滤器是一个好的选择吗?它的好处是什么?还有什么我可能遗漏的吗?

我看不出你目前的方法有任何错误,除非你只是为了这个目的而制作了
UserAwareController
。但是,使用动作过滤器将用户注入到动作或控制器也是一个好主意。就我个人而言,我在我的项目中使用了动作过滤器。我需要在我的操作中有一个可访问的管理员用户,我使用操作过滤器注入该用户


通常,当您需要在执行操作之前或之后执行特定的操作时,操作过滤器会显示出潜在的功能。操作筛选器是操作方法的一个交叉关注点。

我建议您使用成员资格提供程序来存储和检索用户信息。默认的ASP.NET MVC模板有一个示例。也可能值得一看。

组合总是比继承好,在您的情况下,您的视图可能还需要知道用户,如显示名称/身份验证状态等。请查看下面的文章,我详细介绍了如何管理此类共享服务