我已经设法让不记名令牌在 api 项目中工作。
在我的解决方案中,我有 2 个项目一个 api 和 mvc 应用程序。api 处理承载令牌的身份验证和生成。
我想从 mvc 应用程序调用 api 进行身份验证并能够设置身份验证 cookie 以与 mvc 应用程序一起使用。
我的 Web 应用程序没有标准的帐户控制器操作。我已删除所有操作,并且只有一个操作,如下所示。我的 api 应该照顾一切。
简短的问题是如何。
我在我的 mvc 应用程序中创建了一个操作来调用 api 应用程序中的 /token 端点。
public class BearerToken
{
[JsonProperty("access_token")]
public string AccessToken { get; set; }
[JsonProperty("token_type")]
public string TokenType { get; set; }
[JsonProperty("userName")]
public string UserName { get; set; }
[JsonProperty(".issued")]
public DateTime Issued { get; set; }
[JsonProperty(".expires")]
public DateTime Expires { get; set; }
}
public async Task<ActionResult> Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid)
{
var parameters = new Dictionary<string, string>
{
{"grant_type", "password"},
{"username", login.UserName},
{"password", login.Password}
};
var data = RestSharperHelper.PostForm(parameters, "http://localhost:2000/Token");
var bearer = JsonConvert.DeserializeObject<BearerToken>(data);
if (bearer != null)
{
//user access_token for all future api requests
//how do I generate the local auth cookie to tell the application User.Authenticated = true?
}
在我调用 /Token 端点后,如何设置本地身份验证 cookie 以允许 webapp 在我的控制器上使用 [Authorize] 属性?
先感谢您。