A funcionalidade de restrição de data e hora do Gestor de acesso sensível ao contexto permite às empresas definir controlos de acesso com base na data e hora.
Ao avaliar o acesso de confiança zero, é frequentemente necessário restringir o acesso dos utilizadores aos recursos a dias e horas específicos. Por exemplo, os trabalhadores por turnos só podem ter autorização para aceder aos recursos da empresa durante o respetivo turno, ou os utilizadores podem receber acesso temporário entre uma determinada hora do dia.
Para aplicar a condição de nível de acesso de hora e dia, use as funções indicadas na tabela seguinte. O formato das funções é function(timezone)
.
Pode especificar timezone
como UTC, fusos horários fixos que são desvios explícitos de horas e minutos em relação ao UTC ou como nomes longos timezone
, como Europe/Paris
, CET
ou US/Central
. Para ver uma lista completa, consulte a secção Fuso horário da definição da linguagem comum Express.
Se não especificar um "fuso horário", a expressão assume o fuso horário UTC.
Função | Descrição | Exemplo |
---|---|---|
getFullYear |
Obtenha o número que representa o ano atual, como 2020. | É o ano de 2020? request.time.getFullYear("America/Los_Angeles") == 2020
|
getMonth |
Obter o mês do ano. Os valores dos meses variam de 0 a 11, onde 0 == janeiro e 11 == dezembro. | O mês é janeiro? request.time.getMonth("America/Los_Angeles") == 0
|
getDate |
Obtenha a data do mês. Os valores de data variam de 1 a 31, em que 1 é o primeiro dia do mês e 31 é o 31.º dia do mês. |
É o primeiro dia do mês? request.time.getDate("America/Los_Angeles") == 1
|
getDayOfMonth |
Obter o dia do mês. Os valores dos dias variam de 0 a 30, em que 0 é o primeiro dia do mês e 30 é o 31.º dia do mês. | É o primeiro dia do mês? request.time.getDayOfMonth("America/Los_Angeles") == 0 |
getDayOfWeek |
Obter o dia da semana. Os valores dos dias variam entre 0 e 6, em que 0 é domingo e 6 é sábado. | É segunda-feira? request.time.getDayOfWeek("America/Los_Angeles") == 1 |
getDayOfYear |
Obtenha o dia do ano. Os valores dos dias variam de 0 a 365, em que 0 é o primeiro dia do ano e 365 é o 366.º dia do ano. |
É o primeiro dia do ano? request.time.getDayOfYear("America/Los_Angeles") == 0
|
getHours |
Obter a hora do dia. Os valores das horas variam entre 0 e 23, em que 0 é a meia-noite e 23 é as 23:00. |
São 19:00? request.time.getHours("America/Los_Angeles") == 19 |
getMinutes |
Obtém o minuto da hora. Os valores dos minutos variam entre 0 e 59, em que 0 é o primeiro minuto e 59 é o último minuto da hora. |
São 19:30? request.time.getHours("America/Los_Angeles") == 19 && request.time.getMinutes("America/Los_Angeles") == 30 |
date |
Devolve a indicação de tempo que representa a data normalizada para a meia-noite UTC. | Hora atual em UTC. request.time.date()
|
date(tz string) |
Devolve a indicação de tempo que representa a data normalizada para a meia-noite relativamente à string de fuso horário <tz>. | Hora atual na Hora do Pacífico.
|
timeOfDay |
Devolve o google.type.TimeOfDay associado à data/hora em UTC. |
Hora do dia atual em UTC, como "09:30:00" request.time.timeOfDay() |
timeOfDay(tz string) |
Devolve o google.type.TimeOfDay associado à data/hora e relativo à string de fuso horário <tz>. | Hora atual do dia no fuso horário do Pacífico, como "09:30:00" request.time.timeOfDay('America/Los_Angeles') |
between(start, stop) (para indicação de tempo) |
Para uma determinada data/hora, devolve "Start" e "stop" podem ser | A data/hora atual, em PST, está entre 10 de janeiro de 2020 às 00:00 (inclusive) e 11 de janeiro de 2020 às 00:00 (exclusive)? request.time.date('08:00')
.between('2020-10-01T00:00:00+08:00', '2020-10-01T00:00:00+08:00')
|
between(start, stop string) (para TimeOfDay) |
Para um determinado type.TimeOfDay ou string, que é convertida em type.TimeOfDay .
|
A hora atual do dia, na Hora do Pacífico, está entre as 09:30 (inclusive) e as 17:30 (exclusive)? request.time.timeOfDay('America/Los_Angeles').between('09:30:00', '17:30:00')
|
A tabela seguinte contém exemplos de como usar restrições de hora e data:
Política de exemplo | Expressão |
---|---|
Permitir que os trabalhadores por turnos acedam aos recursos de segunda a sexta-feira, entre as 09:00 e as 17:00, exceto a 4 de julho. | Opção 1: request.time.getDayOfWeek("America/Los_Angeles") >= 1 && request.time.getDayOfWeek("America/Los_Angeles") <= 5 && request.time.getHours("America/Los_Angeles") >= 9 && request.time.getHours("America/Los_Angeles") <= 17 && !(request.time.getMonth("America/Los_Angeles") == 6 && request.time.getDayOfMonth("America/Los_Angeles") == 3)
Opção 2:
|
Permitir acesso temporário a recursos a 1 de março de 2020, entre as 22:00 e as 00:00. | Opção 1: Opção 2:
|
Seguem-se alguns exemplos de expressões que usam algumas das funções para captar intervalos de tempo específicos:
Expresse o intervalo durante o horário de funcionamento
O formato de data/hora é "HH:MM:SS" e segue a norma RFC 3339.
request.time.timeOfDay('America/Los_Angeles').between('09:30:00', '17:30:00')
request.time.date('America/Los_Angeles')
.between('01-10-2020T00:00:00+08:00', '01-11-2020T00:00:00-07:00')
Expresse dias específicos do mês, primeira semana
(Note o suporte para o formato de fuso horário alternativo)
request.time.getDayOfMonth('America/Los_Angeles') < 7
Expressar intervalos de datas específicos, anualmente
Por exemplo, para relatórios trimestrais.
request.time.date('Asia/Hong_Kong').between(
request.time.getFullYear('08:00') + '-12-15T00:00:00+08:00',
request.time.getFullYear('08:00')+1 + '-01-01T00:00:00+08:00')