당신은 비계 응용 프로그램을 시작하면, default.py
컨트롤러, 당신은 아마 같은 기능이 있습니다
def user():
return dict(form=auth())
가 auth
객체를 호출합니다 (특정 조치가에 따라 결정된다 모든 인증 작업에 대한 처리를 처리/default/user 다음에 첫 번째 URL 인수 - 그래서/default/user/register는 등록 작업을 트리거합니다. 여기에 코드 삽입 문제는 Auth가 일반적으로 등록 후 리디렉션되도록 구성되므로 코드가 실행되지 않습니다.
하나의 솔루션은 인증 콜백 기능을 설정하는 것입니다. auth.settings.register_onaccept
및 auth.settings.profile_onaccept
은 성공적인 등록 또는 프로필 업데이트 후에 호출되는 콜백 목록입니다. 관련 Auth form
개체가 이러한 콜백에 전달되고 삽입/업데이트 된 값은 form.vars
(form.vars.id
은 사용자 ID 임)에 있습니다. 등록 예는 this section of the docs을 참조하십시오.
또 다른 옵션은 _after_insert
and _after_update
callbacks을 db.auth_user
테이블에 설정하는 것입니다. MongoDB를 DAL 객체가 mongo
이라고하며 db.auth_user.id
이 필드에 저장됩니다 가정하면 user_id
라고 :
def copy_user(fields, id):
fields.update(user_id=id)
mongo.auth_user.insert(**fields)
def update_user(dal_set, fields):
id = dal_set.select(db.auth_user.id)[0].id
mongo(mongo.auth_user.user_id == id).update(**fields)
db.auth_user._after_insert.append(copy_user)
db.auth_user._after_update.append(update_user)
이 방법의 장점은 통해 레코드가 예를 들어 인증 시스템 (외부에서 업데이트 된 경우에도 작동한다는 것입니다 appadmin 기능).
web2py에 익숙하지 않은 분은 용서해주십시오.하지만 web2py가 사용자 관리를 위해 SQL 데이터베이스를 사용하기 때문에 MongoDB에 데이터를 저장하지만 MySQL에 사용자를 저장하는 것이 이상하게 보입니다. 나는 그것이 web2py의 기본 설정이라고 생각한다. 나는 처음에는 MongoDB에 web2py를 저장하고 MySQL과 MongoDB 모두에 사용자를 저장하지 말아야한다고 생각합니다. – bpgergo
Web2py의 인증 시스템은 MongoDB에서 작동하지 않으며 사용자 지정 해결 방법을 구축하지 못했습니다. 따라서 단순화하기 위해 회원 관리를 SQL로 유지하려고합니다. – datasci