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

Spring security未授权用户

洪德寿
2023-03-14

我是Spring Security的新手,我正在开发一个需要使用Spring Security 3.2进行身份验证和授权的web应用,身份验证部分工作正常,但授权不正常。下面是我的Spring Security配置xml片段。

<authentication-manager>
    <authentication-provider>
        <password-encoder ref="encoder" />
        <jdbc-user-service data-source-ref="myDataSource"
            users-by-username-query=" SELECT email_address as username , password, enabled FROM users WHERE email_address = ?   "
            authorities-by-username-query=" SELECT u.email_address as username , 
                                            r.role_name FROM users u
                                            INNER JOIN user_roles ur
                                            ON ur.user_id = u.user_id
                                            INNER JOIN roles r
                                            ON r.role_id = ur.role_id
                                            WHERE u.email_address = ? "/>
    </authentication-provider>
</authentication-manager>

<beans:bean id="encoder"
    class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder">
    <beans:constructor-arg name="strength" value="11" />
</beans:bean>

<http pattern="/resources/**" security="none" />

<http auto-config="true" use-expressions="true" create-session="ifRequired">

    <form-login login-page="/" default-target-url="/admin/dashboard"
        authentication-failure-url="/login-error" always-use-default-target="true" />

    <!-- Security zones -->
    <intercept-url pattern="/" access="isAnonymous()" />
    <intercept-url pattern="/admin*" access="hasRole('ROLE_ADMIN')" />

    <session-management invalid-session-url="/"
        session-fixation-protection="newSession">
        <concurrency-control max-sessions="1"
            error-if-maximum-exceeded="true" />
    </session-management>

    <logout logout-success-url="/" delete-cookies="JSESSIONID"
        invalidate-session="true" />

    <access-denied-handler error-page="/403" />
</http>

使用此配置,除了授权之外,其他一切都可以正常工作。我有两个用户,即tim@abc.com(角色=管理员)和bob@abc.com(role=USER),但是当我尝试使用bob@abc.com然后,我还可以查看不应该出现的管理/仪表板页面。

我也参考了很多教程和spring doc,但没有找到确切的问题。请帮忙。

共有1个答案

王宏深
2023-03-14

将模式更改为"/admin/*"

<代码>

您的默认目标url="/admin/dashboard"似乎令人困惑,因为每个用户登录后都会重定向到 /admin/dashboard。使用bob@abc.com登录时,可能会收到超文本传输协议未授权响应。

 类似资料:
  • 我们使用Spring Security OAuth2保护我们的REST服务(用于服务器到服务器通信,不涉及用户)。但是,当您尝试访问浏览器中的受保护资源时,它将显示: 我们希望这是我们自己选择的自定义页面。有办法吗? 设置“拒绝访问”页面不起作用。首先,它需要定义一个登录页面,我们没有,因为这是一个纯服务器到服务器的通信。另一个原因是,这个属性自Spring 3.0..或类似的版本以来就被弃用了。

  • 问题内容: 我从Nexus存储库中检出了代码。我更改了帐户密码,并在文件中正确设置了密码。在执行时,我收到错误消息,说明它尝试从该存储库下载文件。 任何想法如何解决此错误?我在Maven 3.04中使用Windows 7 问题答案: 这里的问题是所使用的密码出现错字错误,由于密码中使用了字符/字母,因此很难识别。

  • http://docs.mongodb.org/manual/tutorial/add-user-administrator/ 2)然后我编辑了mongod.conf,取消了这一行的注释 4)我可以连接,但它在连接时说了这句话。 5)现在,我创建的这个用户似乎根本没有权限。 问题出在哪里?我将整个过程重复了3次,并且 我认为我是按照MongoDB文档中指定的方式完成的。但它不起作用。 我希望这个用

  • 我试图让我的API网关与Cognito用户池授权器一起工作,但我似乎无法让它工作。我现在没有使用任何SDK。一些细节-对于Cognito pool,我将设置ID provider设置为Cognito user pool,Oauth flow'impilicit grant‘和scope设置为'openid'。创建了一个应用程序(&domain),还生成了客户端机密。电子邮件是唯一的字段。-在API

  • 我试图通过Java Apachebeam MongoDbIO连接器连接到MongoDB,得到一个“未授权”错误。 同样的连接细节也适用于Python并能够检索数据。 “org.apache.beam.sdk.io.mongodbo.mongodbio$boundedmongodbsource.$closeresource(Mongodbio.java:407)位于org.apache.beam.s