Overwriting injected object
===

I'm a little bit confused about the CDI-behavior regarding the changing of injected objects.

I've got a simple user-class containing login and password. I produce an object for CDI:

    public class SessionService {
    
    	@LoggedIn
    	@Produces @SessionScoped
    	public User loggedInUser() {
    		return new User("login", "pass");
    	}
    }


In the next step, the user opens an login-view and the login-controller checks the credentials. 

    @Named
    @SessionScoped
    public class LoginController extends Controller implements Serializable {
    
    	private static final long serialVersionUID = 6047784887724513434L;
    	
    	@Inject
    	UserService userService;
    	
    	@Inject
    	Credentials credentials;
    	
    	@Inject
    	@LoggedIn
    	User currentUser;
    	
    	public void doLogin() {
    		User check = userService.findUser(credentials.getLogin());
    		if((check != null) && (check.getPasswort().equals(SHA256.hash(credentials.getPasswort())))) {
    			currentUser = check;
    			FacesRedirect.fromOutcome("login.success");
    		} else {
    			addErrorMessage("loginFailed");
    		}
    	}
    }

When I try to overwrite the initially produced currentUser-object with the found "check"-user this doesn't work - I don't get an error, but the injected object in other classes is the same as before.
When I call the setLogin() / setPassword() methods of the injected currentUser-object, these changes are available to all other classes.

    currentUser.setId(check.getId());
    currentUser.setLogin(check.getLogin());
    currentUser.setPasswort(check.getPassword());

Is there another way to overwrite the whole object instead of calling all the setters?

On the first try I used @Produces in the LoginController, but when I what to inject it into an Filter, the startup fails.

Thanks for the help,
Tobias