如何在没有Identity的情况下在asp.net MVC中实现自定义身份验证/授权?

时间:2017-10-13 09:53:42

标签: c# asp.net asp.net-mvc security asp.net-mvc-5

我正在开发一个asp.net MVC 5解决方案,我现在需要实现身份验证和授权。该解决方案具有管理“繁重工作”的外部服务,该服务将在每个请求上获取用户名和密码,并且在成功验证时发回具有用户权限(角色)的令牌,该权限应与控制器中的属性匹配。

对我的解决方案的每个请求都应该向外部服务发出请求。如何在我现有的asp.net MVC 5解决方案中以简单的方式实现这一点?我看过Identity和Owin,但他们觉得我想要实现的目标过于臃肿。我也找到了一些关于Forms auth的信息,但它似乎已被弃用了?

我尝试过的工作流程是这样的:

用户请求控制器。控制器标有“Require(Roles =”IT“)”等属性。我实现了IauthenticationFilter并在OnAuthentication中调用我的服务来验证用户请求。从回归开始,我将验证用户实际上是他所说的人,以及是否允许他在所述控制器上输入所述操作。

感谢任何输入,因为我很难找到有关如何实施自定义身份验证解决方案的可靠信息。有没有最好的做法?

谢谢!

1 个答案:

答案 0 :(得分:2)

MVC建立在ASP.NET的接口IPrincipalIIdentity之上。如果您实现这些接口,则可以使用MVC的现有[Authorize] / [AllowAnonymous]属性功能,只有在需要除用户/角色之外的某些功能时才能扩展它。

我不会在这里重复实现 - 有几篇关于如何正确实现这些接口的帖子(应该在ASP.NET / MVC中的Application_PostAuthenticateRequest事件中设置)。