0

acegi セキュリティ モジュールを使用するサーブレット アプリケーションでフォーム ベースのログインを回避する方法はありますか? どうにかログインとパスワードをURLに渡したいです。私はこのようなものを呼び出そうとしました:

GrantedAuthority[] grantedAuthorities = new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ADMIN")};
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken("admin", "passwordofadmin", grantedAuthorities);
WebAuthenticationDetails authdetails = (WebAuthenticationDetails) authentication.getDetails();
HttpSession session = event.getSession();
ProviderManager pm = (ProviderManager)WebApplicationContextUtils.getWebApplicationContext(session.getServletContext()).getBean("authenticationManager");
pm.doAuthentication(authentication);
SecurityContextHolder.getContext().setAuthentication(authentication);

イベントのハンドラーで、HttpSessionCreatedEventイベントを受け取りAuthenticationSuccessEventましたが、Failureイベントも受け取り、認証フォームが表示されました。

4

1 に答える 1

0

まず、xml で UserDetailsS​​ervice をオーバーライドする必要があります。このようなもの:

<bean id="userService" class="com.security.UserSecurityService" >
    ...
</bean>

次に、独自の service.like を作成します。

public class UserSecurityService implements UserDetailsService {
public UserDetails loadUserByUsername(String username)
        throws UsernameNotFoundException, DataAccessException{

User user =userDAO.findByUsername(username);
GrantedAuthority[] grantedRoles = {new GrantedAuthorityImpl("ROLE_USER")};

        secUsr = new User(user.getUsername(), user.getPassword(), true, grantedRoles);

これがお役に立てば幸いです

于 2013-05-27T17:33:37.763 に答える