Como redirecionar usuários anônimos para a página de login usando o módulo Regras?


12

Estou usando o módulo de regras com o drupal 7 para redirecionar usuários anônimos para a página de login, por isso criei uma regra com o evento "Drupal está inicializando", condição "O usuário tem função" com o usuário anônimo e "URL de logon no site não" ", adicionou uma ação" Redirecionamento de página "ao URL de login do site. Quando eu tentei testar a regra; O drupal continuou redirecionando para a página de login repetidamente até o servidor apache parar de funcionar. Alguma recomendação.


usuário anônimo pode explorar o conteúdo do site? por que motivo precisa redirecionar a página de login?
monymirza

usuários anônimos não têm permissão para explorar nenhum conteúdo do site nem se registrar, exceto com um convite. Os usuários precisam fazer login para usar o site.
Aboodred1

Eu não entendo esta parte "regra drupal continuou redirecionando para a página de login sem mostrá-la." Você poderia explicar o que quer dizer? Caso contrário, não sei se entendi qual parte não está funcionando.
Boriana Ditcheva

Bem, quando vou para a página inicial ou qualquer outra página, mas não a página de login, a regra funciona bem; está redirecionando o usuário para a página de login, no entanto, o navegador continua redirecionando para a página de login repetidamente até o apache parar de funcionar.
Aboodred1

se os usuários anônimos não têm permissão para explorar qualquer conteúdo do site, em seguida, retire a permissão para visualizar conteúdos
monymirza

Respostas:


12

A maneira que eu resolvi da seguinte forma:

  • Eventos: Drupal está inicializando
  • Condições:

    1. O usuário tem funções -Parameter: User: [site:current-user], Roles: anonymous user
    2. NÃO Comparação de texto -Parameter: Text: [site:current-page:url], Matching text: user/login
  • Ações: redirecionamento de página -Parameter: URL: user/login


Regra de exportação da seguinte maneira:

{ "rules_login" : {
    "LABEL" : "login",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "login" ],
    "REQUIRES" : [ "rules" ],
    "ON" : { "init" : [] },
    "IF" : [
      { "user_has_role" : {
          "account" : [ "site:current-user" ],
          "roles" : { "value" : { "1" : "1" } }
        }
      },
      { "NOT text_matches" : { "text" : [ "site:current-page:url" ], "match" : "user\/login" } }
    ],
    "DO" : [ { "redirect" : { "url" : "user\/login" } } ]
  }
}

@TopTomato isto é para drupal 7
Aboodred1

cometi um erro e está funcionando.
TopTomato 27/09/16

@TopTomato Awesome! Que bom que funcionou para você.
precisa saber é o seguinte

3

Vá para /admin/people/permissionsdesmarcar Exibir conteúdo publicado para usuários anônimos

insira a descrição da imagem aqui

agora vá para /admin/config/system/site-informationadicionar 'usuário' no campo da página (acesso negado)

insira a descrição da imagem aqui


boa solução, mas ainda preciso mostrar a página de acesso negado, porque nem todos os usuários têm as mesmas permissões. Eu aprecio sua ajuda.
Aboodred1

em seguida, remova 'user' a partir de (acesso negado) campo de página no passo 2
monymirza

se eu removê-lo; usuários anônimos só podem ver o acesso negado sem redirecionar para a página de login. Tenho certeza que há uma maneira que eu possa fazê-lo no módulo regras
Aboodred1

sim. ainda pode ser feito pelo módulo de regras. você também pode fazê-lo através do módulo do núcleo do gatilho.
monymirza

1
Se alguém tiver acesso negado, não significa que não esteja logado. Veja esta resposta
Tanvir Ahmad

1

Tenho certeza que você pode fazer isso com regras, mas seria fácil fazer isso no arquivo template.php do seu tema também.

Algo assim deve funcionar:

global $user;
if ($user->uid == 0 && arg(0) != 'user' && arg(1) != 'login'){
  drupal_goto('user/login');
}

Ou, se o acesso às páginas de usuário / registro e usuário / senha ainda for necessário:

global $user;
if ($user->uid == 0 && arg(0) != 'user'){
  drupal_goto('user/login');
}

Obrigado @Chance Eu já encontrei esta solução antes de postar minha pergunta. Quero regras usar o módulo ou pelo menos entender por que não o seu trabalho com "Drupal está inicializando"
Aboodred1

@ Chance, estou curioso. Onde isso residiria no arquivo .theme?
TikaL13

0

O problema aqui é o evento em questão. Em vez de Drupal is initializing, tente Content is viewed.


Eu tentei antes de postar esta pergunta e funcionou bem comigo, exceto em exibir páginas, página de registro, basicamente qualquer página que não seja um nó.
Aboodred1

0

Eu sei que este é um post de dois anos atrás. No entanto, a solução para redirecionar um usuário anônimo para a página de login do usuário com regras é a seguinte:

  • evento: A entrada do log do sistema é criada
  • condição: O usuário tem papéis: anônimo
  • ação: valor de redirecionamento de página: usuário

Espero que isso ajude alguém.


você já tentou sua solução antes de publicá-la aqui?
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.