spring-mvc 어플리케이션 위에 스프링 보안을 사용하고 있습니다. 현재 진행중인 응용 프로그램에 대한 몇 가지 사항이 있습니다.스프링 보안이 금지 된 페이지로 리디렉션됩니다 (403)
- 홈페이지는 로그인 페이지 즉 users()입니다. 로그인 메뉴는 HTML 드롭 다운 메뉴로 제공됩니다.
userDetailsService()
및UserDetails()
대신AuthenticationManager
/제공을 구현 - 필수가 어떤 역할없이 홈 페이지를 볼 수있는 사람입니다.
현재 상황 :
- 는 엔트리 포인트-REF에 언급 된 403 페이지에 리디렉션합니다.
- user.jsp 또는/users로 리디렉션하는 방법을 모르는 경우
- net에서 찾을 수있는 모든 예제는 AuthenticationManager를 구현하는 것과 동일한 것을 보여줍니다. 일부 코드 :
보안-context.xml에
<import resource="servlet-context.xml" />
<!-- Global Security settings -->
<security:global-method-security pre-post-annotations="enabled" />
<!-- Spring Security framework settings -->
<security:http pattern="/users" use-expressions="true" auto-config="true" disable-url-rewriting="true" entry-point-ref="formAuthenticationEntryPoint">
<security:session-management>
<security:concurrency-control max-sessions="5" error-if-maximum-exceeded="false"/>
</security:session-management>
<security:intercept-url pattern="/*" requires-channel="any" access="permitAll" />
<security:intercept-url pattern="/**" requires-channel="any" access="permitAll" />
</security:http>
<!-- queries to be run on data -->
<beans:bean id="formAuthenticationEntryPoint"
class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/>
<bean id="LoginServiceImplementation" class="com.WirTauschen.service.LoginServiceImpl"></bean>
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider user-service-ref="userDetailsService" />
</security:authentication-manager>
</beans>
LoginServiceImpl :
@Service("userDetailsService")
public class LoginServiceImpl implements UserDetailsService{
@Autowired private UserDao userDao;
@Autowired private Assembler assembler;
@Override
@Transactional
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
UserDetails userDetails = null;
User user = userDao.findByName(username);
if(user == null) { throw new UsernameNotFoundException("Wrong username or password");} //Never specify which one was it exactly
return assembler.buildUserFromUserEntity(user);
}
}
로그인 양식
<nav class="col-lg-5 col-md-5 col-sm-5">
<ul class="pull-right">
<li class="purple"><a href="#"><i class="icons icon-user-3"></i> Login</a>
<ul id="login-dropdown" class="box-dropdown">
<li>
<form id="form" action="<c:url value='/login'/>" method="POST">
<div class="box-wrapper">
<h4>LOGIN</h4>
<div class="iconic-input">
<input type="text" placeholder="Username" name="username" id="username" value="">
<i class="icons icon-user-3"></i>
</div>
<div class="iconic-input">
<input type="password" placeholder="Password" name="password" id="password" value="">
<i class="icons icon-lock"></i>
</div>
<input type="checkbox" id="loginremember"> <label for="loginremember">Remember me</label>
<br>
<br>
<div class="pull-left">
<input name="submit" type="submit" class="orange" value="Login">
</div>
<div class="pull-right">
<a href="#">Forgot your password?</a>
<br>
<a href="#">Forgot your username?</a>
<br>
</div>
<br class="clearfix">
</div>
<div class="footer">
<h4 class="pull-left">NEW CUSTOMER?</h4>
<a class="button pull-right" href="create_an_account.html">Create an account</a>
</div>
</form>
</li>
</ul>
</li>
<li><a href="#"><i class="icons icon-lock"></i> Create an Account</a></li>
</ul>
</nav>
(싸이트 (www.staruml.com) HTML 코드의 일부는 user.jsp에 싸여)
security-applicationContext.xml의 폼 로그인
<security:form-login login-page="/users" default-target-url="/users"/>
도움이 될 것입니다. 봄 보안이 고문에 불과하다는 것을 결코 알지 못했습니다.
사용자는 인증을받지 못합니다. 어떻게해야합니까? 'login-form'이 구성되어 있지 않으며 사용자 이름/암호를 읽지 않고 사용자를 인증하는 것도 없습니다. 가장 큰 문제는 너무 많은 일을하고 있으며, 사용자 정의 엔트리 포인트가 필요 없다는 것입니다. 단지 기본 'form-login'을 사용하십시오. –
HTML 코드로 로그인 양식을 의미합니까, 그곳에 있습니다. 나는 그것을 게시하지 않았다. 붙여 넣기 위해 게시물을 편집 중입니다. –
xml 구성에서와 같이'login-form '이 없습니다. 이것이 URL을 청취하고 로그인 시도를 처리하는 필터를 등록하는 구성 부분입니다. 당신이 당신의 사용자를 인증하는 것이 아무것도 없을 것이라고 덧붙이면 ... –