我正在开发一个asp.net MVC 5解决方案,我现在需要实现身份验证和授权。该解决方案具有管理“繁重工作”的外部服务,该服务将在每个请求上获取用户名和密码,并且在成功验证时发回具有用户权限(角色)的令牌,该权限应与控制器中的属性匹配。
对我的解决方案的每个请求都应该向外部服务发出请求。如何在我现有的asp.net MVC 5解决方案中以简单的方式实现这一点?我看过Identity和Owin,但他们觉得我想要实现的目标过于臃肿。我也找到了一些关于Forms auth的信息,但它似乎已被弃用了?
我尝试过的工作流程是这样的:
用户请求控制器。控制器标有“Require(Roles =”IT“)”等属性。我实现了IauthenticationFilter并在OnAuthentication中调用我的服务来验证用户请求。从回归开始,我将验证用户实际上是他所说的人,以及是否允许他在所述控制器上输入所述操作。
感谢任何输入,因为我很难找到有关如何实施自定义身份验证解决方案的可靠信息。有没有最好的做法?
谢谢!
答案 0 :(得分:2)
MVC建立在ASP.NET的接口IPrincipal
和IIdentity
之上。如果您实现这些接口,则可以使用MVC的现有[Authorize]
/ [AllowAnonymous]
属性功能,只有在需要除用户/角色之外的某些功能时才能扩展它。
我不会在这里重复实现 - 有几篇关于如何正确实现这些接口的帖子(应该在ASP.NET / MVC中的Application_PostAuthenticateRequest
事件中设置)。