开发者

Code Igniter App: Is-logged-in function: where to put

开发者 https://www.devze.com 2023-03-14 10:55 出处:网络
I\'m building a simple login system for the CI based site and I I\'m unsure of where to place my function:

I'm building a simple login system for the CI based site and I I'm unsure of where to place my function:

is_logged_in()
    // check if session logged in stuff exists
    // if not check for cookie and reset from that
    // return true or false

To start with I need to call this from some public pages so they they can display 'You'r开发者_JAVA技巧e logged in as [blah]. Continue to members area'.

Would it make sense to put this in my login model, call it from my controller(s) and then simply pass the result (logged_in: true/false) to my views?


Mostly.

This might be a Model or it might be a Library issue. The question becomes how you are storing whether they are logged in. Personally, I generally put it in a Library which calls a specific Model, it seems less elegant at first, but realistically, I don't want my Model to know anything about my $_SESSION or my $this->session, one of which would be necessary if I wanted to have a good authentication system.

As to how to communicate with the view, there are a couple of ways:

  1. Have it as a special variable passed to the view:
    Bonus: It is the most obvious.
    Detriment: You will need to place it into every single call to view. This means either you override your loader or you update all of your controls (might be gross).
  2. Have it defined as a constant:
    Bonus:By far the easiest if you have logic in the view.
    Detriment:Constants are rarely the way to go, they are hard to debug, and it is not a very CodeIgniter way of doing things.
  3. Have a helper function (literally a "helper" function)
    Bonus:Universally accessible value which is relatively easy to debug.
    Detriment:Requires a helper to know about a Library and/or Model (this is actually true of the built in form_helper, but it still opens up a proverbial can of worms) and it will probably be a one-function helper file.
  4. Conditionally include a view from the controller
    Bonus:It removes all logic from your view.
    Detriment:You still need to make your controllers aware of the logic.

Personally, I am most likely to use #'s 3 & 4, but each has its advantages.

0

精彩评论

暂无评论...
验证码 换一张
取 消