Hi,

DeltaSpike doesn't provide an authentication mechanism.

You could integrate Picketlink/Box or build your own. With an own producer for current user (Take care of the annotation) you have nearly the same like seam. And for some role checking you can build an easy helper class too. I did the last way and included something like that:

@Named(value = "authenticator")
@SessionScoped
public class Authenticator implements Serializable {

    /**
     * Serial Version UID
     */
    private static final long serialVersionUID = 1L;



    @Inject
    private UserServiceLocal userService;

    private String loginName;
    private String password;

    private User currentUser;


    public String authenticate() {
        if (null != currentUser) {
            return "home?faces-redirect=true";
        }
        currentUser = userService.findByLoginName(loginName);
        if (null != currentUser) {
            if(currentUser.getPassword().equals(password)) {
                return "home?faces-redirect=true";
            }
            currentUser = null;
        }
        return "index?faces-redirect=true";
    }

    public String logout() {
currentUser = null; FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
        return "index?faces-redirect=true";
    }

   @Named
    @Produces
    @CurrentUser
    public User getCurrentUser() {
        return currentUser;
    }

    /**
     * @return the password
     */
    public String getPassword() {
        return password;
    }

    /**
     * @param password the password to set
     */
    public void setPassword(String password) {
        this.password = password;
    }

    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }
}

@Named
@ViewScoped
public class Security implements Serializable {

    /**
     * Serial Version UID
     */
    private static final long serialVersionUID = 1L;

    @Inject
    @CurrentUser
    private User user;

    @Inject
    private SecurityServiceLocal securityService;

    private List<String> roleNames;

    @PostConstruct
    public void init() {
        if (null != user) {
            roleNames = new ArrayList<String>();

            for (SecurityRole role : securityService.loadUserRoles(user)) {
                roleNames.add(role.getName());
            }

        }
    }

    public boolean hasRole(String roleName) {
        if (null != roleNames && !roleNames.isEmpty() && null != roleName) {
            return roleNames.contains(roleName);
        }
        return false;
    }

    public boolean isAdmin() {
        if (null != roleNames && !roleNames.isEmpty()) {
            return roleNames.contains("ADMIN");
        }
        return false;
    }

    public boolean isLoggedIn() {
        if (null != user) {
            return true;
        }
        return false;
    }

Kind Regards
Florian

Quoting Kelly Goedert <[email protected]>:

Hi,

I have a very simple application working with seam 3. It has a login and a
simple crud. Now I would like to migrate this simple example to deltaspike.
I simply added deltaspike core and security dependencies, but I am missing
the dependencies for BaseAuthenticator and Authenticator interface.

What dependencies I am missing? Is there an example on doing a simple
authentication process?

Thanks

Kelly


Reply via email to