我有自定义登录实现的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;实体框架
任何想法?
答案 0 :(得分:1)
是的,您可以,但您需要通过某种API公开您的应用程序登录。
例如,您可以创建一个令牌服务器,负责验证您的API和您的MVC项目 - 外部提供商 - 例如Google或Facebook。
这也是在两个应用程序(MVC和API)之间共享相同令牌的最佳方式。
查看this文章,它非常清楚。
希望有所帮助:)
答案 1 :(得分:0)
对于基于令牌的身份验证,您需要使用配置mvc应用程序或webapi来发出令牌。类库无法发出令牌。主要原因是,您需要调用配置为获取令牌的URL,例如http://localhost:8080/api/gettoken。 因此,要么使用webapi发出令牌或mvc应用程序来发放令牌。