我应该扩展控制器还是创建助手?

I need to access some functions in multiple controllers in a CodeIgniter application. At the moments the functions are really basic and a few, For example:

        generate_random_key()  //just a random string
        is_logged()           //check if user is logged or not
        logged_user_only()    //if unlogged, redirect
        unlogged_user_only() //if logged, redirect

As these functions are related to login, I can either put them in a helper file and place in Application/helpers/login_helper.php

OR

i can extend the CI_Controller, by creating MY_Controller.php and put it in Application/Core/MY_Controller.php

Both of the methods work, but I am wondering which one fits better for this kind of task. I think there should be some rules, when the Controller should be extended or when the helper should be used?

If you're using these functions in your other controllers (and only in your other controllers) I would suggest refactoring them into MY_Controller. This would also give you direct access to the $CI instance (instead of calling get_instance())

On the other hand, you could create an Authentication library. This might be more suitable..

EDIT::

I would recommend having a MY_Controller as a base, that contains auth wrapper functions, which invoke functionality from a Library that manages this type of thing.

IMO, login functionality has nothing to do with a Controller. That's the reason I would probably put the functions you mention into a helper or a library.

The solution I m thinking:

If you want to follow design pattern, use hook(works like a filter from Java perspective).

Alternate should be extending your My_Controller