2011-11-04 24 views
10

Tôi giấu mật khẩu cơ sở dữ liệu trong datasource.groovy bằng cách làmẩn mật khẩu cơ sở dữ liệu sử dụng đặc điểm kỹ thuật codec trong datasource.groovy không làm việc

dataSource { 
pooled = true 
driverClassName = "com.mysql.jdbc.Driver" 
username = "root" 
password = "q59YgJCdHw3dshwlsa==" 
passwordEncryptionCodec = DESCodec 
dbname="mydbname" 
} 

theo artilce: http://jira.grails.org/browse/GRAILS-3620

tôi chạy lớp giải mã groovy riêng để nhận chuỗi được mã hóa như sau: groovy grails-app/utils/DESCodec.groovy mypassword_string_text.

Nhưng sau khi đặt lớp DESCodec trong gói Utility trong grails, khi tôi cố gắng khởi động máy chủ, nó sẽ không bắt đầu nhưng tắt trực tiếp, nó bắt đầu khi tôi trực tiếp đặt đúng mật khẩu và nhận xét codec và chuỗi được mã hóa. Tôi giả sử nó không tìm thấy lớp codec/bất cứ thứ gì khác mà tôi thiếu trong cấu hình như chỉ định lớp codec yêu cầu báo giá hoặc thay đổi đường dẫn hoặc tôi nên thay đổi thuật toán, bằng cách lớp DESCodec là lớp codec cuối cùng trong liên kết.

Tôi đang làm việc để cấu hình được môi trường cụ thể và bên ngoài, nhưng tôi vẫn cần mật khẩu được mã hóa ở đây, và sau đó giải mã trước khi kết nối với cơ sở dữ liệu.

+0

Tôi đã chuyển lớp Descodec thành thư mục tiện ích/gra/reports và nhập lớp trong datasource.groovy như nhập gra.reports.Descodec, nó vẫn không hoạt động .. –

Trả lời

13

Tôi nghĩ cách tốt nhất để làm điều này là cấu hình riêng biệt môi trường (đặc biệt là mật khẩu, URL, địa chỉ email và vv) và sau đó bảo vệ tệp cấu hình với quyền thích hợp trên hệ thống tệp của máy đích.

Trong Config.groovy (ví dụ):

grails.config.locations = [ 
    "file:/etc/${appName}/conf/db.properties" 
] 

và trong tập tin cấu hình:

dataSource.username = "root" 
dataSource.password = "secret" 

Tôi thường làm điều này cho cấu hình sản xuất, nhưng giữ dev/kiểm tra cấu hình trong Config .groovy để thuận tiện. Khi chạy trong dev/test, bạn chỉ nhận được cảnh báo khi khởi động nếu nó không thể tìm thấy tệp cấu hình tham chiếu. Nếu nó tìm thấy nó, thì nó sẽ ghi đè lên những gì trong Config.groovy

Điều này có thêm lợi thế là không yêu cầu tệp chiến tranh của bạn được biên dịch lại và triển khai lại nếu thay đổi cấu hình môi trường, bạn chỉ cần thay đổi tệp cấu hình và khởi động lại ứng dụng.

+0

cảm ơn bạn đã chia sẻ điều này! – Chris

+0

cảm ơn mẹo! –

+0

Xin chào Darrend, tôi chấp nhận rằng bên ngoài các biến là cách để đi nhưng tôi vẫn muốn chuỗi mật khẩu được mã hóa ngay cả ở vị trí bên ngoài. –

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