Greetings java hipsters!
我刚刚创建了一个jhipster项目并创建了一些实体。我想通过将它们限制为仅限管理员用户来隐藏某些实体。我该如何实现这一目标?
谢谢!
答案 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服务器,可以遵循以下过程。
src/main/webapp/app/app.tsx
,其中包含所有路由机制。检查组件<Header ..{additional props added}.. />
mapStateToProps
上有一个名称为isAdmin
的函数,用于检查登录用户是否为管理员。 (根据您的ROLE进行更改。我使用的是ROLE_ADMIN,所以我保持原样。)src/main/webapp/app/shared/layout/header/header.tsx
。该文件包含对<EntitiesMenu >
组件下的实体的所有导航。将<EntitiesMenu admin={props.isAdmin} />
的isAdmin属性传递给EntitiesMenu组件现在转到src/main/webapp/app/shared/layout/menus/entities.tsx
分别将路径更改为
{
这有助于隐藏导航链接。
props.isAdmin && (
<MenuItem icon="asterisk" to="/entity/institute">
<Translate contentKey="global.menu.entities.institute"
/>
</MenuItem> )
}
src/main/webapp/app/entities/index.tsx
从<ErrorBoundaryRoute ../>
更改为 <PrivateRoute path={
$ {match.url} / institute } component={Institute} hasAnyAuthorities={[AUTHORITIES.ADMIN]} />
此后,即使用户通过在浏览器搜索栏中提及URL来打开URL,Jhipster也会验证用户是否具有该角色。如果不是,则会显示拒绝访问页面。