asp.Netweb api 2クッキーによる認証
2065 ワード
asp.Netweb api転送ゲート:ドメイン間リクエストサポート swaggerオンラインインタフェースドキュメント ブラウザはリクエストを送信するたびにクッキーを持ってきます.これによってユーザーの認証を行うことができます.
本稿では,要求ヘッダにsetCookieが含まれているか否かを特性により判断する.
クッキーの設定
本稿では,要求ヘッダにsetCookieが含まれているか否かを特性により判断する.
クッキーの設定 HttpCookie cookie = new HttpCookie("UserInfo");// Cookie
cookie.HttpOnly = true; // cookie
cookie.Values["name"] = " "; // cookie
cookie.Values["age"] = 21;
HttpContext.Current.Response.AppendCookie(cookie); // cookie
クッキーの有効期限を負数にすると、クッキーをクリアする効果が得られますHttpCookie cookie = new HttpCookie("UserInfo");
cookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.AppendCookie(cookie);
使用方法の詳細:参照先
クッキーの取得 HttpContext context = HttpContext.Current;
HttpCookie cookie = context.Request.Cookies["UserInfo"];
string name = cookie["name"];
プロパティを使用して、リクエストがクッキーを携帯しているかどうかを判断します。
まず、プロパティクラスを作成します:CookieCheckAttributepublic class CookieCheckAttribute : Attribute, IAuthorizationFilter
{
public bool AllowMultiple { get; }
public async Task ExecuteAuthorizationFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func> continuation)
{
IEnumerable headers;
if (actionContext.Request.Headers.TryGetValues(name: "Cookie", out headers))
{
// Cookie, api
return await continuation();
}
// Cookie,
return new HttpResponseMessage {
Content = new StringContent(JsonConvert.SerializeObject(new {
result=-1,
message=" !"
}))
};
}
}
使用:メソッドの前に[CookieCheck]を付けるだけでOK[CookieCheck]
[HttpPost]
public string GetName(string id)
{
return " ";
}
HttpCookie cookie = new HttpCookie("UserInfo");// Cookie
cookie.HttpOnly = true; // cookie
cookie.Values["name"] = " "; // cookie
cookie.Values["age"] = 21;
HttpContext.Current.Response.AppendCookie(cookie); // cookie
HttpCookie cookie = new HttpCookie("UserInfo");
cookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.AppendCookie(cookie);
HttpContext context = HttpContext.Current;
HttpCookie cookie = context.Request.Cookies["UserInfo"];
string name = cookie["name"];
プロパティを使用して、リクエストがクッキーを携帯しているかどうかを判断します。
まず、プロパティクラスを作成します:CookieCheckAttributepublic class CookieCheckAttribute : Attribute, IAuthorizationFilter
{
public bool AllowMultiple { get; }
public async Task ExecuteAuthorizationFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func> continuation)
{
IEnumerable headers;
if (actionContext.Request.Headers.TryGetValues(name: "Cookie", out headers))
{
// Cookie, api
return await continuation();
}
// Cookie,
return new HttpResponseMessage {
Content = new StringContent(JsonConvert.SerializeObject(new {
result=-1,
message=" !"
}))
};
}
}
使用:メソッドの前に[CookieCheck]を付けるだけでOK[CookieCheck]
[HttpPost]
public string GetName(string id)
{
return " ";
}
public class CookieCheckAttribute : Attribute, IAuthorizationFilter
{
public bool AllowMultiple { get; }
public async Task ExecuteAuthorizationFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func> continuation)
{
IEnumerable headers;
if (actionContext.Request.Headers.TryGetValues(name: "Cookie", out headers))
{
// Cookie, api
return await continuation();
}
// Cookie,
return new HttpResponseMessage {
Content = new StringContent(JsonConvert.SerializeObject(new {
result=-1,
message=" !"
}))
};
}
}
[CookieCheck]
[HttpPost]
public string GetName(string id)
{
return " ";
}