【发布时间】:2015-03-25 00:54:41
【问题描述】:
我有 3 个用户 ROLE ACCESS、ROLE_ADMIN、ROLE_SUPER_ADMIN、ROLE_USER。(角色将来可能会增加。所以硬编码角色根本不是强制性的)
我的 security_servlet.xml 是这样的
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/admin*" access="hasRole('ROLE_ADMIN')" />
<intercept-url pattern="/user*" access="hasRole('ROLE_USER')" />
<intercept-url pattern="/" access="permitAll" />
<intercept-url pattern="/candidate*" access="hasRole('ROLE_SUP_ADM')" />
<form-login login-page="/login"
authentication-failure-url="/accessdenied" />
<logout logout-success-url="/logout" />
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider>
<!-- <user-service> <user name="rohit" password="rohit" authorities="ROLE_ADMIN"
/> <user name="ronnie" password="ronnie" authorities="ROLE_USER" /> </user-service> -->
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="select username, password, active from users where username=?"
authorities-by-username-query="select us.username, ur.authority from users us, user_roles ur
where us.user_id = ur.user_id and us.username =? " />
</authentication-provider>
</authentication-manager>
登录后重定向到“/”。我想要的是如果角色是“ROLE_ADMIN”那么它应该登陆管理员默认页面,如“/admin/profile”,如果角色是“ROLE_USER”那么“/user/profile”
我使用了 default-target-url,但它不适合我。
【问题讨论】:
-
写你自己的
AuthenticationSuccessHandler而不是使用默认值。
标签: spring hibernate spring-security