- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 spring security 3当我输入错误的数据时,用户被重定向到登录失败链接但是 spring security 不调用 loadUserByUsername 方法?那么身份验证是如何发生的并且 spring 知道凭据是错误的呢?或者我的配置有问题,请指导。
登录页面:
<form action="/myapp/j_spring_security_check">
<h:graphicImage id="graphicImage1" style="height: 322px; left: 0px; top: 0px; position: absolute" url="/resources/images/LoginImage.jpg" width="560"/>
<h:outputLabel for="j_username" id="outputLabel1" style="left: 48px; top: 120px; position: absolute" value="Username:"/>
<h:outputLabel for="j_password" id="outputLabel2" style="left: 48px; top: 168px; position: absolute" value="Password:"/>
<h:inputText binding="#{login.username}" id="j_username" required="true"
style="left: 142px; top: 118px; position: absolute; width: 237px" />
<h:inputSecret binding="#{login.password}" id="j_password" required="true" style="left: 142px; top: 166px; position: absolute; width: 237px"/>
<h:commandButton id="loginBtn" style="left: 144px; top: 240px; position: absolute" value="Login"/>
<h:commandButton action="#{login.reset}" id="resetBtn" style="position: absolute; left: 360px; top: 240px" value="Reset"/>
<h:outputText id="errorMessage" style="left:0px;top:300px;position:absolute"/>
<h:message errorClass="errorMessage" for="j_username" fatalClass="fatalMessage" id="messages1" infoClass="infoMessage" showSummary="false"
style="height: 43px; left: 24px; top: 288px; position: absolute; width: 523px;color:red;" warnClass="warnMessage"/>
</form>
安全.xml:
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.4.xsd">
<global-method-security pre-post-annotations="enabled" />
<!-- key configuration here is an entry point to be used by security intercepts -->
<http use-expressions="true" auto-config="false">
<session-management session-fixation-protection="none"/>
<remember-me token-validity-seconds="1209600"/>
<!-- Exclude the login page from the security check -->
<intercept-url pattern="/faces/login.xhtml" access="permitAll"/>
<!-- All pages requires authentication (not anonymous user) -->
<intercept-url pattern="/faces/**" access="isAuthenticated()" />
<intercept-url pattern="/faces/javax.faces.resource/**" filters="none" />
<intercept-url pattern="/faces/xmlhttp/**" filters="none" />
<intercept-url pattern="/faces/resources/**" filters="none" />
<intercept-url pattern="/faces/j_spring_security_check/**" filters="none" />
<intercept-url pattern="/scripts/**" filters="none" />
<intercept-url pattern="/images/**" filters="none" />
<intercept-url pattern="/css/**" filters="none" />
<!-- Returns true if the user is not anonymous -->
<access-denied-handler error-page="/error"/>
<form-login default-target-url="/users"
always-use-default-target="true"
login-processing-url="/j_spring_security_check"
login-page="/faces/login.xhtml"
authentication-failure-url="/faces/login.xhtml?login_error=1"
/>
<logout logout-url="/logout" logout-success-url="/login" />
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userDetailsServiceImpl">
</authentication-provider>
</authentication-manager>
</beans:beans>
3- UserDetailsService:
@Service("userDetailsServiceImpl")
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
private UserDao userDao;
@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException, DataAccessException {
System.out.println("########## LOADING USER ##################");
User user = userDao.findUserByEmail(username);
return new org.springframework.security.core.userdetails.User(
user.getEmail(), user.getPassword(), true, true, true, true,
setUserAuthorities(user.getAuthorities()));
}
public Collection<GrantedAuthority> setUserAuthorities(List<Authority> auths) {
List<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>();
for (Authority auth : auths)
grantedAuthorities.add(new GrantedAuthorityImpl(auth.getName()));
return grantedAuthorities;
}
}
最佳答案
You remember that I told that spring security adds a lot of filters ?其中一个过滤器负责检查是否将对 j_spring_security_check
的请求转发给身份验证管理器。
但你没有那个过滤器。
如果没有理由反对,则启用自动配置:
<http use-expressions="true" auto-config="true">
并为/j_spring_security_check
添加一个拦截器
<intercept-url pattern="/j_spring_security_check" access="permitAll"/>
关于spring - loadUserByUsername 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7754191/
我正在使用 spring security 3当我输入错误的数据时,用户被重定向到登录失败链接但是 spring security 不调用 loadUserByUsername 方法?那么身份验证是如
以下 spring-security-context: 在index.jsp中我有以下形式: Hello, dear us
我调试了 UserDetailsServiceImpl 的 loadUserByUsername 方法,但当我提交登录表单时,它永远不会被调用,我用谷歌搜索它,没有解决方案适合我。 登录.jsp
这是来自 here 的 Spring Security 登录示例。我将注释配置更改为 XML,并对它应该指向的 url 进行了一些更改。我能够使用数据库中的凭据成功登录。如果我输入错误的密码,我会收到
我正在使用 DaoAuthenticationProvider 进行身份验证,但是当我提交表单时,loadUserByUsername 被 super.authenticate(authenticat
我正在使用 spring security 进行身份验证。问题是我一直将用户名作为空字符串获取。我什至搜索它,我得到的是我必须遵循标准名称的字段,如我已经在做的 j_username 和 j_pass
我正在学习 Spring Security我有几个简单的问题尊重UserDetailsService : 1- 当loadUserByUsername实际调用或调用?认证后?每次登录一次? 2- 登录
我是 Spring security 的新手,刚刚开始学习它。我想使用自定义 User 类,因此我尝试实现 UserDetailsService 接口(interface)并重写 loadUser
这是我的UserDetailService : public class StockUserDetailService implements UserDetailsService { @Aut
我一直在尝试从这里实现 Facebook OAuth: http://alvarosanchez.github.io/grails-spring-security-rest/latest/docs/i
我是一名优秀的程序员,十分优秀!