我正在将Apache Shiro实现到我的web应用程序中,在启动时遇到了问题。
我想从postgreSQL数据库加载角色和权限,并检查用户是否具有角色/权限。
我的角色权利系统包括以下内容:
用户-
角色-
可以将角色分配给多个用户
用户角色分配始终与其他两个条件相关:
因此,用户“教员管理员”基本上可能有以下内容:
所以他可以说OE“3”的教员“员工”的“manage\u Users”
我知道如何在shiro.ini文件中实现角色,但是因为我在数据库中有我的角色/权限(权限),所以我需要它们从那里加载。
在Shiro的快速入门示例中,有以下示例:
# The 'goodguy' role is allowed to 'drive' (action) the winnebago (type) with
# license plate 'eagle5' (instance specific id)
goodguy = winnebago:drive:eagle5
如果我将此示例应用于我的情况,我会得到以下结果:
# The 'OE-Admin' role is allowed to 'manage_users' of OE '3' (type) with
# faculty 'staff'
OE-Admin = 3:manage_users:staff
我的角色定义如下:
角色=OE:右:教师(或者按顺序改变他们,真的很重要)
现在最大的问题是:我如何从我的数据库中“加载”我的角色/权限,以获得角色的这种规定格式及其权限??
到目前为止,我在shiro内部有以下内容。ini:
ds = org.postgresql.Driver
ds.serverName = localhost
ds.user = admin
ds.password = admin
ds.databaseName = db_name
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.dataSource = $ds
jdbcRealm.permissionsLookupEnabled = true
我知道必须有一个类似“jdbcRealm.userRolesQuery=SELECT…”的条目但我不知道如何加载角色的方式,我如上所述。
它是否只是. ini文件的一个条目,它将等效于这样的静态角色集:古德盖=winnebago:驱动器: eagle5
或者需要采取哪些步骤来实现这一点?
有没有人对Apache Shiro有更多的经验可以帮助我?有一些教程,但我发现很难遵循它们来创建带有owm角色的自定义jdbc领域
编辑:数据库结构:
用户:
id serial NOT NULL,
"user" character varying(50) NOT NULL,
CONSTRAINT umgmt_users_pkey PRIMARY KEY (id)
角色:
id serial NOT NULL,
role character varying(50) NOT NULL,
priv_level integer NOT NULL,
CONSTRAINT umgmt_roles_pkey PRIMARY KEY (id)
权利(权限):
id serial NOT NULL,
"right" character varying(50) NOT NULL,
CONSTRAINT umgmt_rights_pkey PRIMARY KEY (id)
以防万一,这是我的表,我在其中存储用户-角色-OE Fac关系
id serial NOT NULL,
user_id integer NOT NULL,
oe_id integer NOT NULL,
fac_id integer NOT NULL,
role_id integer NOT NULL,
assigned_by_priv_level integer NOT NULL,
CONSTRAINT umgmt_user_oe_fac_role_pkey PRIMARY KEY (id),
CONSTRAINT fac_fkey FOREIGN KEY (fac_id)
REFERENCES umgmt_facultys (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT oe_fkey FOREIGN KEY (oe_id)
REFERENCES umgmt_oes (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT role_fkey FOREIGN KEY (role_id)
REFERENCES umgmt_roles (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT user_fkey FOREIGN KEY (user_id)
REFERENCES umgmt_users (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
好吧,在与RevXaisks长时间讨论之后,我会再睡一晚,但我认为Shiro在角色/权限检查方面不符合我的需要。谢谢你,伙计,你很有耐心。
我正试图将我的UserDAO注入到ApacheShiro正在使用的自定义授权域中,但是。。。我得到空值。 我做错了什么? 西罗。伊尼 jparelm。JAVA 我必须做些什么才能让CDI在我的自定义域中意识到@Inject并正确地注入我的UserDAO?
自定义角色:只有团队负责人、团队管理员和地图管理员三个角色可以创建自定义角色,可以自定义角色的名称和权限。 自定义角色分为: 自定义地图角色:对地图级别进行权限设置 自定义图层角色:对图层级别进行权限设置 自定义子图层角色:对子图层级别进行权限设置 自定义业务流角色:对业务流层级进行权限设置 1.创建自定义角色: 以地图角色创建为例,点击“创建新角色”,出现创建创建新角色的弹框。点击“地图角色”。
我有一些自定义角色,例如: 当使用'ROLE_USER'时,“spans”中的文本可以正常显示,但当使用其他角色时,文本无法显示。然后我在自定义角色中添加'ROLE_'前缀,它又变得正常了。 我尝试删除“ROLE\uu0”前缀约束,如下所示: 它也不起作用。知道如何删除强制的“ROLE\uuux”前缀吗?
我已经基于命名的路由为Laravel(4.2)创建了自定义角色管理器,例如: 基本上,任何注册为
问题内容: 在将旧版应用程序迁移到Spring Security时,出现以下异常: 在旧的应用程序中,角色有“超级管理员”,“编辑者”,“帮助台”等。但是在所有Spring Security示例中,我仅看到诸如“ ROLE _”(“ ROLE_ADMIN”等)的角色。当我将“ superadmin”重命名为“ ROLE_ADMIN”并且仅在配置中使用此角色时,一切正常。 不起作用: 作品: 可以使
亲切的问候