FalconSSO/FAuth/Extensions/CookieHelper.cs

80 lines
3.0 KiB
C#
Raw Normal View History

using System;
using Microsoft.AspNetCore.CookiePolicy;
using Microsoft.AspNetCore.Http;
namespace FAuth.Extensions
{
/// <summary>
/// cookie帮助类
/// </summary>
public static class CookieHelper
{
/// <summary>
/// 设置Cookie值
/// </summary>
/// <param name="httpContext">http上下文</param>
/// <param name="key">Cookie的键</param>
/// <param name="value">cookie值</param>
/// <param name="minutes">cookie有效期。分钟无限传null或不传</param>
public static void SetCookies(this HttpContext httpContext,string key,string value,int? minutes = null) {
SetCookies(httpContext.Response,key,value,minutes);
}
/// <summary>
/// 设置Cookie值
/// </summary>
/// <param name="response">http响应</param>
/// <param name="key">Cookie的键</param>
/// <param name="value">cookie值</param>
/// <param name="minutes">cookie有效期。分钟无限传null或不传</param>
public static void SetCookies(this HttpResponse response,string key,string value,int? minutes = null) {
if(minutes.HasValue) {
response.Cookies.Append(key,value,new CookieOptions {
Expires = DateTime.Now.AddMinutes(minutes.Value)
});
} else {
response.Cookies.Append(key,value);
}
}
/// <summary>
/// 删除cookie
/// </summary>
/// <param name="httpContext">http上下文</param>
/// <param name="key">要删除的键</param>
public static void DeleteCookies(this HttpContext httpContext,string key) {
DeleteCookies(httpContext.Response,key);
}
/// <summary>
/// 删除cookie
/// </summary>
/// <param name="response">http响应</param>
/// <param name="key">要删除的键</param>
public static void DeleteCookies(this HttpResponse response,string key) {
response.Cookies.Delete(key);
}
/// <summary>
/// 获取cookie中的值
/// </summary>
/// <param name="httpContext">http上下文</param>
/// <param name="key">cookie的键</param>
/// <returns>保存的值</returns>
public static string GetCookiesValue(this HttpContext httpContext,string key) {
return GetCookiesValue(httpContext.Request,key);
}
/// <summary>
/// 获取cookie中的值
/// </summary>
/// <param name="request">http请求</param>
/// <param name="key">cookie的键</param>
/// <returns>保存的值</returns>
public static string GetCookiesValue(this HttpRequest request,string key) {
if(request.Cookies.TryGetValue(key,out string value)) {
return value;
}
return string.Empty;
}
}
}