mirror of https://github.com/abpframework/abp.git
committed by
GitHub
6 changed files with 137 additions and 1 deletions
@ -0,0 +1,11 @@ |
|||||
|
using System; |
||||
|
|
||||
|
namespace Volo.Abp.AspNetCore.Components.WebAssembly |
||||
|
{ |
||||
|
public class CookieOptions |
||||
|
{ |
||||
|
public DateTimeOffset? ExpireDate { get; set; } |
||||
|
public string Path { get; set; } |
||||
|
public bool Secure { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,32 @@ |
|||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.JSInterop; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
|
||||
|
namespace Volo.Abp.AspNetCore.Components.WebAssembly |
||||
|
{ |
||||
|
[Dependency(ReplaceServices = true)] |
||||
|
public class CookieService : ICookieService, ITransientDependency |
||||
|
{ |
||||
|
public IJSRuntime JsRuntime { get; } |
||||
|
|
||||
|
public CookieService(IJSRuntime jsRuntime) |
||||
|
{ |
||||
|
JsRuntime = jsRuntime; |
||||
|
} |
||||
|
|
||||
|
public async ValueTask SetAsync(string key, string value, CookieOptions options) |
||||
|
{ |
||||
|
await JsRuntime.InvokeVoidAsync("abp.utils.setCookieValue", key, value, options?.ExpireDate?.ToString("r"), options?.Path, options?.Secure); |
||||
|
} |
||||
|
|
||||
|
public async ValueTask<string> GetAsync(string key) |
||||
|
{ |
||||
|
return await JsRuntime.InvokeAsync<string>("abp.utils.getCookieValue", key); |
||||
|
} |
||||
|
|
||||
|
public async ValueTask DeleteAsync(string key, string path = null) |
||||
|
{ |
||||
|
await JsRuntime.InvokeVoidAsync("abp.utils.deleteCookie", key); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
using System; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace Volo.Abp.AspNetCore.Components.WebAssembly |
||||
|
{ |
||||
|
public interface ICookieService |
||||
|
{ |
||||
|
public ValueTask SetAsync(string key, string value, CookieOptions options = null); |
||||
|
public ValueTask<string> GetAsync(string key); |
||||
|
public ValueTask DeleteAsync(string key, string path = null); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,80 @@ |
|||||
|
var abp = abp || {}; |
||||
|
(function () { |
||||
|
abp.utils = abp.utils || {}; |
||||
|
/** |
||||
|
* Sets a cookie value for given key. |
||||
|
* This is a simple implementation created to be used by ABP. |
||||
|
* Please use a complete cookie library if you need. |
||||
|
* @param {string} key |
||||
|
* @param {string} value |
||||
|
* @param {string} expireDate (optional). If not specified the cookie will expire at the end of session. |
||||
|
* @param {string} path (optional) |
||||
|
* @param {bool} secure (optional) |
||||
|
*/ |
||||
|
abp.utils.setCookieValue = function (key, value, expireDate, path, secure) { |
||||
|
var cookieValue = encodeURIComponent(key) + '='; |
||||
|
if (value) { |
||||
|
cookieValue = cookieValue + encodeURIComponent(value); |
||||
|
} |
||||
|
|
||||
|
if (expireDate) { |
||||
|
cookieValue = cookieValue + "; expires=" + expireDate; |
||||
|
} |
||||
|
|
||||
|
if (path) { |
||||
|
cookieValue = cookieValue + "; path=" + path; |
||||
|
} |
||||
|
|
||||
|
if (secure) { |
||||
|
cookieValue = cookieValue + "; secure"; |
||||
|
} |
||||
|
|
||||
|
document.cookie = cookieValue; |
||||
|
}; |
||||
|
|
||||
|
/** |
||||
|
* Gets a cookie with given key. |
||||
|
* This is a simple implementation created to be used by ABP. |
||||
|
* Please use a complete cookie library if you need. |
||||
|
* @param {string} key |
||||
|
* @returns {string} Cookie value or null |
||||
|
*/ |
||||
|
abp.utils.getCookieValue = function (key) { |
||||
|
var equalities = document.cookie.split('; '); |
||||
|
for (var i = 0; i < equalities.length; i++) { |
||||
|
if (!equalities[i]) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
var splitted = equalities[i].split('='); |
||||
|
if (splitted.length != 2) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if (decodeURIComponent(splitted[0]) === key) { |
||||
|
return decodeURIComponent(splitted[1] || ''); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return null; |
||||
|
}; |
||||
|
|
||||
|
/** |
||||
|
* Deletes cookie for given key. |
||||
|
* This is a simple implementation created to be used by ABP. |
||||
|
* Please use a complete cookie library if you need. |
||||
|
* @param {string} key |
||||
|
* @param {string} path (optional) |
||||
|
*/ |
||||
|
abp.utils.deleteCookie = function (key, path) { |
||||
|
var cookieValue = encodeURIComponent(key) + '='; |
||||
|
|
||||
|
cookieValue = cookieValue + "; expires=" + (new Date(new Date().getTime() - 86400000)).toUTCString(); |
||||
|
|
||||
|
if (path) { |
||||
|
cookieValue = cookieValue + "; path=" + path; |
||||
|
} |
||||
|
|
||||
|
document.cookie = cookieValue; |
||||
|
} |
||||
|
})(); |
||||
Loading…
Reference in new issue