我显示在公共域中的grails应用一些同事。到目前为止,我在devel的模式,我的工作,并通过战争还没有部署。

我需要,以确保应用程序从检查出来/摆弄它保持onybody。我有一个适当的用户已经MGMT,但某人看到任何东西之前,我想有htpasswd的类似保护。如果可能的话,我不想放大用的插件(例如,四郎)。

的应用程序本身

任何想法/建议?

非常感谢!

有帮助吗?

解决方案

您可以使用HTTP认证。 HTTP认证是实现死的简单,但它不是很安全或使用。你最好不要使用四郎或弹簧安全真正解决问题。这就是说,一个简单的过滤器可以检查一个HTTP授权报头,并且如果不存在返回401个状态代码。这将强制浏览器弹出一个用户名/密码盒,并与在标头中编码的用户名和密码重新提交表单。

Grails的过滤器必须有一个类名,与“过滤器”和两端走在的grails-app / conf目录。下面是一个例子:

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

其他提示

以下内容添加到$ CATALINA_HOME /的的conf / tomcat的-users.xml中的Tomcat并重新启动:

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

在你的Grails项目的根,执行grails install-templates。这将地方的的src /模板/战争/ web.xml文件的到项目中。点击 (如果文件不是在IDE中可见,这可能是一个错误。然后发现它在文件系统中。)

添加以下的web.xml (作为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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top