Domanda

sto mostrando un'applicazione graal ad alcuni colleghi su un dominio pubblico. Finora sto lavorando in modalità devel e non sono stati distribuiti attraverso la guerra.

Ho bisogno di garantire l'applicazione al fine di mantenere onybody da estrarlo / giocare con esso. Ho un Mgmt utente in atto già, ma prima di sb vede niente mi piacerebbe avere Htpasswd-come protezione. Se possibile, non voglio per ingrandire la domanda stessa con i plugin (ad esempio, shiro).

Qualche idea / suggerimento?

Grazie mille!

È stato utile?

Soluzione

Si potrebbe utilizzare l'autenticazione HTTP. HTTP l'autenticazione è morto semplice da implementare, ma non è molto sicuro o utilizzabile. È meglio utilizzare shiro oa molla di sicurezza per una soluzione reale. Detto questo, un semplice filtro può controllare per un'intestazione HTTP Authorization e restituire il codice di stato 401 se non presente. Che forzare il browser per far comparire una scatola di nome utente / password, e inviare nuovamente il modulo con il nome utente e la password codificata nelle intestazioni.

filtri Grails deve avere un nome di classe che termina con "Filtri" e andare nella directory graal-app / conf. Ecco un esempio:

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
            }
        }
    }
}

Altri suggerimenti

Aggiungere il seguente a $ CATALINA_HOME / conf / tomcat-users.xml e riavviare Tomcat:

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

A vostra radice del progetto Grails, eseguire grails install-templates. Questo posto sarà src / templates / guerra / web.xml nel progetto.
(Nel caso in cui il file non è visibile nel vostro IDE, questo potrebbe essere un bug. Poi trovano nel file system.)

Aggiungere il seguente per web.xml (come figlio del tag 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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top