从类库到mvc5应用程序的基于令牌的身份验证

时间:2016-04-15 07:49:22

标签: c# asp.net-mvc asp.net-web-api owin asp.net-mvc-5

我有自定义登录实现的mvc5应用程序。一旦我从用户那里获得了凭据,并且发送了令牌以验证用户。 Owin Token在单独的类库项目中实现。

[HttpPost]
        [AllowAnonymous]
        public ActionResult Login(UserLoginViewModel model)
        {
            string baseAddress = "http://localhost:4312";
            Token token = new Token();
            using (var client = new HttpClient())
            {
                var form = new Dictionary<string, string> 
               { 
                   {"grant_type", "password"}, 
                   {"username", "jignesh"}, 
                   {"password", "user123456"}, 
               };
                var tokenResponse = client.PostAsync(baseAddress + "/otoken", new FormUrlEncodedContent(form)).Result;
                //var token = tokenResponse.Content.ReadAsStringAsync().Result;
                token = tokenResponse.Content.ReadAsAsync<Token>(new[] { new JsonMediaTypeFormatter() }).Result;
               ........
            }
    }

我不确定如何从mvc应用程序调用/触发类库项目中的标记实现。因为类库项目不是可执行项目。是否可以在单独的类lib中实现基于令牌的实现,并在不同的应用程序(mvc和webapi)中使用该实现。

我的图层

UI(MVC) - &gt;认证项目(Owin class libarary) - &gt;实体框架

任何想法?

2 个答案:

答案 0 :(得分:1)

是的,您可以,但您需要通过某种API公开您的应用程序登录。

例如,您可以创建一个令牌服务器,负责验证您的API和您的MVC项目 - 外部提供商 - 例如Google或Facebook。

这也是在两个应用程序(MVC和API)之间共享相同令牌的最佳方式。

查看this文章,它非常清楚。

希望有所帮助:)

答案 1 :(得分:0)

对于基于令牌的身份验证,您需要使用配置mvc应用程序或webapi来发出令牌。类库无法发出令牌。主要原因是,您需要调用配置为获取令牌的URL,例如http://localhost:8080/api/gettoken。 因此,要么使用webapi发出令牌或mvc应用程序来发放令牌。