当前位置: 首页 > 知识库问答 >
问题:

Apache Shiro决定登录后要使用的角色

海灵均
2023-03-14

我有一个现有的遗留项目,它是用Spring 3和Apache Shiro构建的,用于身份验证和授权。它使用JDBC领域。

我们使用分配给权限的权限和分配给用户的权限来实现授权。

场景如下:

>

  • use1: foRole, barRole

    foo角色:foo。准许1,foo。准许2.

    bar.permission.1,bar.permission.2

    我被要求使用“user1”登录,登录后选择角色“user1”要使用的操作。例如:

    1. 正确的登录用户1

    根据我的应用程序中的shiro架构,我有一个只读的“主题”。安全管理员从我的数据库中获取信息。我可以检查主题是否具有特定的角色或权限。但一旦我登录,我就看不出有什么方法可以改变用户角色。

    我认为这不是Apache Shiro的工作方式,这可能不是最好的做法,但无论如何:你们中有人有没有想法明确选择一个只在Apache Shiro中使用的指定角色?

    谢谢大家抽出时间。

  • 共有1个答案

    梁存
    2023-03-14

    您可以在运行时更改用户权限。这里有一个关于这个问题的讨论。这是您必须在自定义Shiro领域中执行的操作,因为它是您通过设计访问授权信息的唯一地方。授权信息(AuthorizationInfo)存储授权数据,例如由单个主题表示的权限和角色。在您的领域之外,主题没有getter和setter来分配角色和权限。您可以随时检查:

    • 如果一个主体持有权限:SecurityUtils.get主体(). isPermit();
    • 如果一个主题拥有一个角色:SecurityUtils.get主题(). hasRoles();

    最简单的授权信息实现是SimpleAuthorizationInfo。

    我认为这是一种糟糕的做法,原因有很多。这不是Shiro构建的目的。

     类似资料:
    • 我想在登录到我的索引页面(index.jsp)后进行重定向,实际上我的登录可以正常工作,但ajax支持缺少重定向。 她是我的登录名。jsp 这是我的登录 我的struts配置文件: 对于DAO部分是: 公共字符串验证(字符串用户名,字符串userpass)抛出SQLException,Exception{ 谢谢你的帮助。

    • 我试图使一个登录系统与PhP后端角。 当人们登录时,这是一个名为: 然后,当我想根据用户获取信息时,我调用这个脚本: 当我在我的浏览器中这样做的时候,它工作了。 但是当我使用 angular 时,和 是空的,所以它向我显示“您没有被记录”。 我的代码在角度: 我的问题: 我应该如何使用PhP/Angular请求根据登录的帐户进行安全登录和数据请求?我是否应该更改语言(改为Java/C#/…)*(这

    • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano

    • 本文展示了如何根据不同的用户角色,在登录之后来重定向到不同的页面。 在 method-security项目的基础上,我们构建了一个role-base-login项目。 build.gradle 修改 build.gradle 文件,让我们的role-base-login项目成为一个新的项目。 修改内容也比较简单,修改项目名称及版本即可。 jar { baseName = 'role-bas

    • 登录帧 菜单框架

    • 问题内容: 我想在我的 react / react-router / flux 应用程序中建立一个Facebook登录名。我在登录事件上注册了一个侦听器,并且希望将用户重定向到(如果他们已登录)。该怎么办?效果不佳,除非完全重新加载了页面。 问题答案: React Router v0.13 该实例从返回可以通过左右(或者,如果内部的阵营组件,你可以从它的上下文对象),以及包含的方法一样,你可以用它