【发布时间】:2015-01-10 17:15:51
【问题描述】:
我有这样的数据库:
Users <-> Roles -> Permissions
在 Spring 中,我使用 spring security 登录 - 我不检查用户具有什么角色。每个人都应该登录。
<authentication-manager alias="authenticationManager">
<authentication-provider>
<password-encoder hash="bcrypt"/>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="select NAME, PASSWORD, 1 as enabled from USERS
where NAME=?"
authorities-by-username-query="SELECT * FROM USERS u JOIN USERS_MTM_ROLES uur
ON u.ID=uur.ROLE_ID join USER_ROLES ur
on ur.id=uur.role_id where NAME=?" />
</authentication-provider>
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/admin**" />
<form-login login-page="/login" default-target-url="/admin"
authentication-failure-url="/login?error" username-parameter="NAME"
password-parameter="PASSWORD" />
<logout logout-success-url="/login?logout" />
</http>
好的,一切都很好!
但是知道,我想使用@Secure 或@Preauthorize 注释,以检查用户是否有权限。但是 spring 将如何知道用户是否有具体的权限呢?权限应该写在某处吗?
换句话说,我希望我的控制器是安全的。如果用户有具体权限,他/她应该可以访问控制器,否则用户不应该。我该怎么做?
【问题讨论】:
标签: java spring spring-mvc spring-security aspectj