具有个人用户帐户身份验证的 ASP.NET MVC 5 WEB API

Posted

技术标签:

【中文标题】具有个人用户帐户身份验证的 ASP.NET MVC 5 WEB API【英文标题】:ASP.NET MVC 5 WEB API with individual user account authentication 【发布时间】:2014-08-08 16:24:12 【问题描述】:

我是 ASP.NET MVC 5 和 WebAPI 2 技术的新手。我目前正在为我的桌面应用程序开发 Web 服务。

我在 asp.net mvc 5 web API 2 中开发了具有个人用户帐户身份验证的网络服务。我参考链接:-“http://vod.com.ng/en/video/KyxcLfz_CW8/8-Authenticated-WebAPI-ASPNET-MVC-5-Fundamentals-5-WebAPI-2”。它帮助了我,但我需要在项目中添加层,即 WEB 和 CORE。

我将“AccountBindingModels.cs”和“AccountViewModels.cs”从 WEB 中的 Models 文件夹转移到 CORE 中的 POCO 文件夹,运行程序后出现错误“POST /api/account/register 500 (Internal Server Error)”和“尝试创建'AccountController'类型的控制器时发生错误”。

我想添加将由单个用户帐户进行身份验证的 api 控制器和模型类。请帮忙。让我知道您还需要知道什么。提前致谢。

来自 UnityConfig.cs 文件的代码

public static void RegisterTypes(IUnityContainer container)

  container.RegisterType(typeof(IRepository<>), typeof(Repository<>));

  container.RegisterType(typeof(DbContext), typeof(DataContext));
  

控制器

namespace DesktopApp.Controllers

public class StudentLoginController : ApiController

    private IRepository<StudentLogin> _StudentLoginRepository;
    public StudentLoginController(IRepository<StudentLogin> StudentLoginRepository)
    
        _StudentLoginRepository = StudentLoginRepository;
    

    [HttpPost]
    [Route("api/StudentLogin/Post")]
    public StudentLogin Post(StudentLogin loginData)
    
        var studentLoginDetails = _StudentLoginRepository.GetAll().Where(p =>      p.studentName == loginData.studentName && p.studentPassword == loginData.studentPassword).FirstOrDefault<StudentLogin>();
        return studentLoginDetails;
         

【问题讨论】:

你的问题有点含糊。你能发布适当的代码sn-ps吗?顺便说一句,我不会将视图模型移动到另一层,因为它们与 UI 相关,因此最好将它们留在这一层中。 如何解决您的依赖关系?如果没有看到您的实际注射,很难说出了什么问题。或许this thread对你有一点帮助。 感谢您的帮助。是的,我将视图模型移动到同一层。但是我在另一层 Core -> POCO 中添加了模型类。我正在使用 Unity 的依赖注入。我认为解决控制器的依赖关系有任何问题。我想我已经为控制器添加了手动依赖解析器。我已经添加了上面的图片。 我一直在解决 userManager 控制器和我的 web api 控制器之间的依赖关系。我已经添加了上面的代码。 你的实际控制器是什么样子的(尤其是你执行注入的构造函数)? 【参考方案1】:

通过创建默认的 AccountController 并删除参数化的 AccountController 解决了这个问题。

 public UserManager<IdentityUser> UserManager  get; private set; 
    public ISecureDataFormat<AuthenticationTicket> AccessTokenFormat  get; private set; 

    public AccountController()            
    
        UserManager = Startup.UserManagerFactory();
       AccessTokenFormat= Startup.OAuthOptions.AccessTokenFormat;
    

【讨论】:

以上是关于具有个人用户帐户身份验证的 ASP.NET MVC 5 WEB API的主要内容,如果未能解决你的问题,请参考以下文章

如何在单个 Microsoft ASP.NET MVC Web 应用程序中同时支持个人用户帐户和工作或学校帐户?

(Asp.Net MVC / Web-Api)中具有相同身份验证系统的多个项目

[ASP.NET Core Web应用上使用个人用户帐户存储在应用程序中的Postman模拟登录时出现400错误请求错误

Asp.Net MVC 5 Owin Twitter Auth 抛出 401 异常

具有 Windows 身份验证的 ASP .NET 身份和数据库中的角色

ASP.NET SQL 配置