Question

Je montre une application de Grails à certains collègues sur un domaine public. Jusqu'à présent, je travaille en mode devel et n'ont pas déployé par la guerre.

Je dois assurer l'application afin de garder onybody de vérifier dehors / jouer avec elle. J'ai un Mgmt utilisateur déjà en place, mais avant tout ce que je voit sb voudrais avoir Htpasswd comme protection. Si possible, je ne veux pas agrandir l'application elle-même avec des plugins (par exemple, Shiro).

Toutes les pensées / suggestions?

Merci beaucoup!

Était-ce utile?

La solution

Vous pouvez utiliser l'authentification HTTP. L'authentification HTTP est mort simple à mettre en œuvre, mais il est pas très sûr ou utilisable. Vous êtes mieux d'utiliser Shiro ou ressort de sécurité pour une véritable solution. Cela dit, un filtre simple peut vérifier un en-tête HTTP d'autorisation et retourner le code d'état 401 si elle est présente non. Cela forcera le navigateur pour faire apparaître une boîte nom d'utilisateur / mot de passe, et soumettre à nouveau le formulaire avec le nom d'utilisateur et mot de passe codé dans les en-têtes.

filtres Grails doit avoir un nom de classe qui se termine par « filtres » et aller dans le répertoire Grails-app / conf. Voici un exemple:

class SimpleAuthFilters {
    def USERNAME = "foo"
    def PASSWORD = "bar"

    static filters = {
        httpAuth(uri:"/**") {
            before = {
                def authHeader = request.getHeader('Authorization')
                if (authHeader) {
                    def usernamePassword = new String(authHeader.split(' ')[1].decodeBase64())
                    if (usernamePassword == "$USERNAME:$PASSWORD") {
                        return true
                    }
                }
                response.setHeader('WWW-Authenticate', 'basic realm="myRealm"')
                response.sendError(response.SC_UNAUTHORIZED)
                return false
            }
        }
    }
}

Autres conseils

Ajoutez ce qui suit à $ CATALINA_HOME / conf / tomcat-users.xml et redémarrez Tomcat:

<role rolename="role1"/>
<user username="user1" password="password1" roles="role1"/>

A la racine de votre projet Grails, exécutez grails install-templates. Ce lieu de volonté src / templates / guerre / web.xml dans le projet.
(Dans le cas où le fichier est pas visible dans votre IDE, cela pourrait être un bug. Ensuite, trouver dans le système de fichiers.)

Ajoutez les lignes suivantes web.xml (comme un enfant de la balise web-app):

<security-constraint>
  <web-resource-collection>
    <web-resource-name>
      Entire Application
    </web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
      <role-name>role1</role-name>
  </auth-constraint>
</security-constraint>

<login-config>
  <auth-method>BASIC</auth-method>
  <realm-name>Restricted Area</realm-name>
</login-config>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top