【问题标题】:Require user login in GWT with web.xml要求用户使用 web.xml 在 GWT 中登录
【发布时间】:2024-01-13 02:50:01
【问题描述】:

我使用 GAE 和 GWT 开发了一个应用程序,用户在访问该站点时必须使用他的 Google 帐户登录。于是我在web.xml文件中定义了以下内容...

<security-constraint>
    <web-resource-collection>
        <url-pattern>/index.html</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
</security-constraint>

当我运行本地开发服务器时,我第一次打开应用程序时会收到测试登录屏幕的提示,但是当我部署它时,我直接进入我的应用程序而无需任何身份验证。 一开始我想,这可能是因为我已经登录了其他 Google 服务,但我也在其他浏览器和隐身模式下尝试过。

【问题讨论】:

    标签: google-app-engine gwt authentication login web.xml


    【解决方案1】:

    我建议尝试一种是使用 URL 模式来 * 以便您的所有资源都是安全的,其次将 web-resource-name 标签添加到“all”值,如下面的代码 sn-p 所示。

    我假设您已经将 servlet 映射到服务等

    <security-constraint>
    <web-resource-collection>
        <web-resource-name>all</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
    </security-constraint>  
    

    【讨论】:

    • 但这也会影响其他 Servlet,对吧?因为我有一个从 Android 设备接收 POST 请求的 Servlet。您对如何授权手机有什么建议吗?
    • 如果手机是通过浏览器访问的,则与PC认证相同。但是,如果正在访问 Android 应用程序,那么我不确定登录将如何工作。我相信有办法,但不知道如何,你可以在Android论坛上查看。如果这是您的要求,您还可以分离出 Android 访问的 URL,而不是对其应用身份验证。
    • Android 客户端也必须获得 Google 帐户的授权。所以如果我可以发送一个“授权”的 POST 请求,那就太好了。我明天要请一些 Google 员工试试你的解决方案,但我很确定它会奏效。
    • 谢谢,它有效。问题是,我将 url 模式设置为 ProjectName.html。它在开发服务器上工作,因为 url 是 Projectname.html?codesrv="" 或其他一些参数。但在 appspot 上,网址只是 projectname.appspot.com
    最近更新 更多