Jhipster:隐藏非管理员的实体

时间:2016-07-14 14:49:37

标签: spring-security spring-boot jhipster

Greetings java hipsters!

我刚刚创建了一个jhipster项目并创建了一些实体。我想通过将它们限制为仅限管理员用户来隐藏某些实体。我该如何实现这一目标?

谢谢!

3 个答案:

答案 0 :(得分:7)

首先阅读Spring Security doc然后查看由JHipster生成的项目源代码:它充满了这样的例子,请注意:

  • SecurityConfiguration.java
  • @Secured(AuthoritiesConstants.ADMIN)
  • UserResource.java

然后,对于角度部分,您可以在状态定义中添加管理角色的要求,例如src/main/webapp/app/admin/configuration/configuration.state.js(搜索for authorities: ['ROLE_ADMIN'])。因此,对于bank-account实体,主要状态将在src/main/webapp/app/entities/bank-account/bank-account.state.js中定义。

这是针对JHipster 3.x

答案 1 :(得分:2)

我只是描述了我是如何在一个更新鲜的版本(JHipster 4.7.0)上阻止新实体("文件夹"):

阻止访问端点我在文件中添加了新行: src / main / java / package path / config / SecurityConfiguration.java

.antMatchers("/api/profile-info").permitAll()
.antMatchers("/api/folders").hasAuthority(AuthoritiesConstants.ADMIN) //new line
.antMatchers("/api/**").authenticated()

更改 src / main / webapp / app / entities / folder / folder.route.ts

 data: {
    authorities: ['ROLE_USER'], // old 
    authorities: ['ROLE_ADMIN'],// new
    pageTitle: 'jmediaApp.folder.home.title'
 },

要从导航栏隐藏项目,您需要在 /src/main/webapp/app/layouts/navbar/navbar.component.html *jhiHasAnyAuthority="'ROLE_ADMIN'"标记中添加<li> >:

<li *jhiHasAnyAuthority="'ROLE_ADMIN'">

答案 2 :(得分:0)

在Gateway UI上,通过使用react.js服务器,可以遵循以下过程。

  1. 打开src/main/webapp/app/app.tsx,其中包含所有路由机制。检查组件<Header ..{additional props added}.. />
  2. mapStateToProps上有一个名称为isAdmin的函数,用于检查登录用户是否为管理员。 (根据您的ROLE进行更改。我使用的是ROLE_ADMIN,所以我保持原样。)
  3. 转到src/main/webapp/app/shared/layout/header/header.tsx。该文件包含对<EntitiesMenu >组件下的实体的所有导航。将<EntitiesMenu admin={props.isAdmin} />的isAdmin属性传递给EntitiesMenu组件
  4. 现在转到src/main/webapp/app/shared/layout/menus/entities.tsx分别将路径更改为

    {
    props.isAdmin && ( <MenuItem icon="asterisk" to="/entity/institute"> <Translate contentKey="global.menu.entities.institute" /> </MenuItem> ) }
    这有助于隐藏导航链接。

  5. 但是,如果用户在浏览器URL上输入特定路径,则不会对此进行验证。因此,将src/main/webapp/app/entities/index.tsx<ErrorBoundaryRoute ../>更改为

<PrivateRoute path={ $ {match.url} / institute } component={Institute} hasAnyAuthorities={[AUTHORITIES.ADMIN]} />

此后,即使用户通过在浏览器搜索栏中提及URL来打开URL,Jhipster也会验证用户是否具有该角色。如果不是,则会显示拒绝访问页面。