繁体   English   中英

如何在 web.xml 文档中引用 ember js 的页面(用于应用 jaas 身份验证)

[英]How to referer to a page of ember js in web.xml document (for applying jaas authentication)

我是 ember js 的新手,我需要将 Jaas 身份验证应用于我的应用程序,该应用程序的前端是基于 Ember JS 构建的,后端是使用 servlet 完成的。 我构建了 ember js 部分并在我的 tomcat 服务器上运行它,所以从技术上讲,我的应用程序在 tomcat 上。 所以我试图对那些灰烬页面或路由应用安全约束。 当我点击受保护的 URL 时,受保护的页面被加载,而不是页面被重定向到登录路由。

这是 web.xml 文件

<security-constraint>
        <web-resource-collection>
             <web-resource-name>admin</web-resource-name>
             <url-pattern>/admin</url-pattern>
        </web-resource-collection>
        <auth-constraint>
             <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>
    
    <security-role>
        <role-name>admin</role-name>
    </security-role>
    
    <login-config>
         <auth-method>FORM</auth-method>
         <realm-name>studentDB_ember</realm-name>
         <form-login-config>
              <form-login-page>/login</form-login-page>
             <form-error-page>/error-login</form-error-page>
         </form-login-config>
    </login-config>

我知道我的 xml 页面有问题。 我的身份验证的其他部分工作正常。 我找不到正确的方式来表示我的 ember 页面的 url。 我应该提到 router.js 上的路径吗? 我试过了,还是不行。 请让我知道我做错了什么以及我应该如何配置我的 xml 以便适当地应用安全约束并且我的身份验证正常工作。

仅供参考:我在 environment.js 文件中提到了位置类型为 hash'#'。 我的链接看起来像这样 http://localhost:8085/test_auth/#/admin。 如果未通过身份验证,它将引导我进入登录页面,如果用户名或密码错误,它将引导我进入错误页面。 如果一切顺利,我们可以看到管理页面。

提前致谢。 如果您需要更多信息,请告诉我。 任何帮助表示赞赏。

如果您的 ember 应用程序由在每条路由上发送相同 html 的后端提供服务(在单页应用程序中很常见),您将希望让您的后端服务 HTML,然后通过beforeModel在前端处理重定向。

例如:

// app/routes/admin.js
import Route from '@ember/routing/route';
import { service } from '@ember/service';

export default class AdminRoute extends Route {
  @service router;

  beforeModel(/* transition */) {
    if (! isAuthenticated ) { // you'll need to define how to determine how isAuthenticated works -- this can be property on a service, an api call, etc.
      this.router.transitionTo('login'); 
    }
  }
}

强烈建议查看https://github.com/simlabs/ember-simple-auth以及他们如何处理此类问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM