ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Changeset 8771


Ignore:
Timestamp:
Oct 23, 2008, 2:35:09 PM (11 years ago)
Author:
shingo
Message:

#3061:セッションの一致確認を各モジュールの auth.inc に記述

Location:
OpenPNE/trunk/webapp
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/trunk/webapp/lib/auth.inc

    r8067 r8771  
    1515    || !($u = db_member_c_member_id4username_encrypted($auth->getUsername(), false))
    1616    || db_member_is_login_rejected($u)
    17     || db_member_is_blacklist($u)) {
     17    || db_member_is_blacklist($u)
     18    || db_member_is_difference_session_per_user($u, $auth, session_id())) {
    1819    $auth->logout();
    1920
  • OpenPNE/trunk/webapp/lib/controller.php

    r8760 r8771  
    205205    }
    206206
    207     if (SESSION_PER_USER && $GLOBALS['AUTH']) {
    208         if ($module == 'pc') {
    209             $u = $GLOBALS['AUTH']->uid();
    210         } elseif ($module == 'ktai') {
    211             $u = $GLOBALS['KTAI_C_MEMBER_ID'];
    212         }
    213         if (!db_member_is_session_per_user($u, session_id())) {
    214             openpne_redirect($module, 'page_o_login');
    215         }
    216     }
    217 
    218207    $result = $action_obj->execute($requests);
    219208    if ($result == 'success') {
  • OpenPNE/trunk/webapp/lib/db/member.php

    r8760 r8771  
    20992099
    21002100/**
    2101  * ログイン時のセッションIDと現在のセッションIDが一致しているかを確認する
     2101 * ログイン時のセッションIDと現在のセッションIDが一致していないことを確認する
    21022102 *
    21032103 * @param int $c_member_id
     2104 * @param bool $is_auth
    21042105 * @param string $now_sess_id 現在のセッションID
    2105  * @return  bool
    2106  */
    2107 function db_member_is_session_per_user($c_member_id, $now_sess_id)
    2108 {
    2109     $sql = 'SELECT sess_id FROM c_member_secure'
    2110          . ' WHERE c_member_id = ?';
    2111     $param = array($c_member_id);
    2112     $login_sess_id = db_get_one($sql, $param);
    2113     if (!$login_sess_id) {
    2114         db_member_update_c_member_secure_insert_sess_id($c_member_id, $now_sess_id);
     2106 * @return bool
     2107 */
     2108function db_member_is_difference_session_per_user($c_member_id, $is_auth, $now_sess_id)
     2109{
     2110    if (SESSION_PER_USER && $is_auth) {
     2111        $sql = 'SELECT sess_id FROM c_member_secure'
     2112             . ' WHERE c_member_id = ?';
     2113        $param = array($c_member_id);
     2114        $login_sess_id = db_get_one($sql, $param);
     2115        if (!$login_sess_id) {
     2116            db_member_update_c_member_secure_insert_sess_id($c_member_id, $now_sess_id);
     2117            return false;
     2118        }
     2119        if ($login_sess_id === $now_sess_id) {
     2120            return false;
     2121        }
    21152122        return true;
    21162123    }
    2117     if ($login_sess_id === $now_sess_id) {
    2118         return true;
    2119     }
    2120 
    21212124    return false;
    21222125}
  • OpenPNE/trunk/webapp/modules/ktai/auth.inc

    r8067 r8771  
    2020    || !($u = db_member_c_member_id4username_encrypted($auth->getUsername(), true))
    2121    || db_member_is_login_rejected($u)
    22     || db_member_is_blacklist($u)) {
     22    || db_member_is_blacklist($u)
     23    || db_member_is_difference_session_per_user($u, $auth, session_id())) {
    2324    $auth->logout();
    2425
Note: See TracChangeset for help on using the changeset viewer.