Jhipster:对非管理员隐藏实体

Jhipster: hide entities from non-admin

你们好java潮人!

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

谢谢!

先阅读Spring Security doc再看你的项目源码是JHipster生成的:里面全是这样的例子,注意:

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

然后对于 angular 部分,您可以在状态定义中添加对管理员角色的要求,如 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

我只是描述了我是如何在更新版本 (JHipster 4.7.0) 上阻止新实体 ("folder") 的:

为了阻止对端点的访问,我在文件中添加了新行: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<li> 标签中添加 *jhiHasAnyAuthority="'ROLE_ADMIN'"

<li *jhiHasAnyAuthority="'ROLE_ADMIN'">

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

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

    {<br> props.isAdmin && ( <MenuItem icon="asterisk" to="/entity/institute"> <翻译内容Key="global.menu.entities.institute" /> </菜单项>) } 这有助于隐藏导航链接。

  6. 但是如果用户在浏览器上输入特定路径url,则没有验证。因此,将 src/main/webapp/app/entities/index.tsx<ErrorBoundaryRoute ../> 更改为

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

在此之后,即使用户通过在浏览器搜索栏中提及它来打开 URL,Jhipster 也会验证用户是否已获得该角色。如果不是简单的拒绝访问页面将被显示。