MVCとWeb APIでユーザーインターフェイスを準備します。 OWINによるWeb APIの承認は正しいです。ログインメソッドでは、Web APIにログオンして情報トークンなどを取ることができますが、Web APIからこの自動化をインポートしてMVCのInterfaceに追加することは可能ですか?そうなら、それを行う方法?ユーザーインターフェイスのOWIN Web API承認
例えば:
public static class WebApiAuthorizationHelper
{
public static string GetToken(string url, string userName, string password)
{
var pairs = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("grant_type", "password"),
new KeyValuePair<string, string>("username", userName),
new KeyValuePair<string, string> ("Password", password)
};
var content = new FormUrlEncodedContent(pairs);
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
using (var client = new HttpClient())
{
var response = client.PostAsync(url + "Token", content).Result;
return response.Content.ReadAsStringAsync().Result;
}
}
public static string CallApi(string url, string token)
{
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
using (var client = new HttpClient())
{
if (!string.IsNullOrWhiteSpace(token))
{
var t = JsonConvert.DeserializeObject<Token>(token);
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + t.access_token);
}
var response = client.GetAsync(url).Result;
return response.Content.ReadAsStringAsync().Result;
}
}
class Token
{
public string access_token { get; set; }
public string token_type { get; set; }
public int expires_in { get; set; }
public string userName { get; set; }
[JsonProperty(".issued")]
public string issued { get; set; }
[JsonProperty(".expires")]
public string expires { get; set; }
}
}
:mvcUI.User = WebAPI.User
私も使用したい* [承認]は、mvcUI
使用WebApiAuthorizationHelperコードで主張します
私たちは同様のセットアップを持っていると思います。トークンをMVC側でデコードし、その主張を読み、MVC側でクッキー認証を使用することで、必要なものを実現できます。 MVC側のクッキーに同じトークン値を格納すると、[Authorize]属性を使用できるようになります。セキュリティはクッキーによって行われますが、jwtトークンによって直接的に行われます。 – Verthosa