سؤال

لديّ تطبيق Grails 1.2 وأريد استخدام الأمان التعريفي من أجل تقييد الوصول على أساس الأدوار. قررت أن أجرب Shiro ، قمت بتثبيت البرنامج المساعد ، لكن عندما أحاول المصادقة ، الرسالة "اسم المستخدم و / أو كلمة المرور غير صالحة" يظهر في الرأس. أتحقق من إدخال DB والمستخدم هناك بكلمة مرور sha'ed. لا يتم عرض أي رسائل في وحدة التحكم ولا في ملف StackTrace. أضفت "تحذير" org.jsecurity " إلى config.groovy مع عدم وجود نتائج. أي تلميحات/حيل لاستكشاف هذا؟

هل كانت مفيدة؟

المحلول

واجهت هذه المشكلة أيضًا ... كيف يمكنك حفظ كلمة المرور للمستخدم؟ بعد تشغيل Quick Start ، اتبعت المثال على صفحة Shiro Plugin وأضفت الرمز أدناه إلى طريقة init bootstrap الخاصة بي:

import org.apache.shiro.crypto.hash.Sha512Hash

def user = new ShiroUser(username: "user123", passwordHash: new Sha512Hash("password").toHex())
user.save()

سأحاول تسجيل الدخول وسأواصل الحصول على تسجيل الدخول. لذلك حاولت

def user = new ShiroUser(username:'admin', passwordHash:new Sha256Hash("admin").toHex())
user.save()

بعد التغيير من sha512hash إلى sha256hash ... تمكنت من تسجيل الدخول!

تحديث: فقط إنشاء تطبيق جديد مع إعدادات البرنامج المساعد الافتراضي Shiro بعد تشغيل "Quick-Start". إذا كنت تريد إنشاء مستخدم ، فأنت تريد استخدام SHA256HASH خارج الصندوق. ومع ذلك ، يمكنك استخدام SHA512Hash أو Sha1hash بإضافة الفول إلى مواردك.

مثال على sha512hash:

beans = {
  bean {
    credentialMatcher(Sha512CredentialsMatcher) {
      storedCredentialsHexEncoded = true
    }
  }
}

نصائح أخرى

هل قمت بتشغيل البداية السريعة؟ هل تستخدم عالم قاعدة البيانات الافتراضي؟

أود تصحيح العالم الذي تستخدمه وأرى ما يحدث.

لا يسعني المساعدة في استكشاف الأخطاء وإصلاحها ، ولكن إذا كنت تبحث عن حل أكثر قوة ، فقد ترغب في الاطلاع على الذكية. يعتمد على Shiro ويوفر الكثير من الميزات والمرونة الإضافية.

يمكنك تثبيت الأحدث مع:
grails install-plugin nimble 0.4-SNAPSHOT

الوثائق الذكية

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top