【问题标题】:ASP.NET MVC 5 WEB API with individual user account authentication具有个人用户帐户身份验证的 ASP.NET MVC 5 WEB API
【发布时间】: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 控制器之间的依赖关系。我已经添加了上面的代码。
  • 你的实际控制器是什么样子的(尤其是你执行注入的构造函数)?

标签: asp.net-mvc-5 asp.net-web-api2


【解决方案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;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 2017-10-14
    相关资源
    最近更新 更多