2012-11-27 35 views
5
CREATE TABLE em_user 
(
    user_id character(10), 
    last_attempt integer, 
    last_unsuccessfull_login timestamp with time zone, 
    is_locked boolean DEFAULT false); 

UPDATE em_user 
SET is_locked = TRUE 
      WHERE last_attempt >3 AND last_unsuccessfull_login=last_unsuccessfull_login+'2 minutes';  

Tôi muốn cập nhật bảng sau 1 giờ trong postgresql.cập nhật postgresql sau 1 giờ

+3

Việc khóa người dùng cho các lần thử không thành công là một ý tưởng khủng khiếp vì nó sẽ cho phép mọi người thực hiện DoS người dùng khác. – ThiefMaster

Trả lời

4

pgAgent là những gì bạn cần. Hãy xem ở đây: http://www.pgadmin.org/docs/1.8/pgagent.html

Bạn có thể tạo công ăn việc làm, thực hiện mỗi giờ, mỗi 15 phút vv

EDIT:

Trong trường hợp cụ thể của bạn sẽ tốt hơn để khóa người sử dụng ngay lập tức bằng trình kích hoạt sau một số lỗi đăng nhập.

Bước tiếp theo sẽ là chạy công việc pgAgent cứ 15 phút một lần. Với công việc này, bạn có thể mở khóa lại tài khoản này, những tài khoản này bị khóa nhiều hơn 15 phút. Vì vậy, bạn có thể ngăn chặn các cuộc tấn công DoS, mà muốn khóa tất cả người dùng của bạn.

+0

Tôi nghĩ rằng những gì anh ta cần là một cái gì đó giống như một cronjob. Những gì anh ta cố gắng làm không giống như một cái gì đó nên được thực hiện trên cơ sở dữ liệu ở tất cả các cấp ... – ThiefMaster

Các vấn đề liên quan