JHipster:允许匿名用户读取实体,但不更新?
我使用这些值生成了一个JHipster应用程序:
{ "generator-jhipster": { "jhipsterVersion": "3.1.0", "baseName": "app", "packageName": "my.app", "packageFolder": "my/app", "serverPort": "8080", "authenticationType": "session", "hibernateCache": "ehcache", "clusteredHttpSession": "no", "websocket": "no", "databaseType": "sql", "devDatabaseType": "h2Disk", "prodDatabaseType": "mysql", "searchEngine": "elasticsearch", "buildTool": "gradle", "enableSocialSignIn": false, "rememberMeKey": "", "useSass": true, "applicationType": "monolith", "testFrameworks": [], "jhiPrefix": "jhi", "enableTranslation": false } }
我想允许匿名用户查看实体,但不允许更新或删除该实体。 我已经尝试编辑生成的SecurityConfiguration.java
文件,以便在configure(HttpSecurity http)
方法中为authorizeRequests()
添加permitAll(HttpMethod.GET,"/**")
。 在尝试访问实体时,我仍然被定向到accessdenied
。
有人曾经解决过这个用例吗?
这适用于AngularJS 1.x.
用于访问资源:在configure(HttpSecurity http)
方法中的SecurityConfiguration.java
中
.and() .authorizeRequests() .antMatchers(HttpMethod.GET, "/api/**").permitAll()
要访问角度视图/状态:对于每个实体,注释掉或删除只读状态的authorities
属性。 下面是src/main/webapp/app/entities/book/book.state.js
Book
实体的示例:
.state('book', { parent: 'entity', url: '/book', data: { // authorities: ['ROLE_USER'], pageTitle: 'monoApp.book.home.title' }, .... }) .state('book-detail', { parent: 'entity', url: '/book/{id}', data: { // authorities: ['ROLE_USER'], pageTitle: 'monoApp.book.detail.title' },
但是,要注意两件事:
- 通过在
SecurityConfiguration
使用此类模式,您还可以在/api/users
公开您的/api/users
。 为每个实体添加permitAll()
会更安全,这样您就可以完全控制您公开的内容(白名单方法) - 用户体验很差,因为您仍然会显示用于添加或删除实体的按钮。 所以你可以用ng-hide隐藏它们