أمن الربيع تذكر مبادئي الأساسية:
عند تسجيل الدخول ، يتم إرسال الطلب إلى Filter UsernamePasswordAuthenticationFilter. عندما يتم مصادقة المرشح بنجاح ، سيتم استدعاء خدمة تذكر ، والتي ستولد رمزًا ، اكتب الرمز المميز إلى ملف تعريف الارتباط للمتصفح. في الوقت نفسه ، هناك tokenRepository في remextmeservice ، الذي يكتب معلومات المستخدم والمستخدم إلى قاعدة البيانات. وبهذه الطريقة ، عندما يصل المستخدم إلى النظام مرة أخرى والوصول إلى واجهة ، فسوف يمر عبر مرشح remextyuthenticationfilter. سوف تقرأ الرمز المميز في ملف تعريف الارتباط ويسلمه لتذكر الخدمات. ستستخدم RememberService tokenRepository للتحقق مما إذا كانت هناك سجلات من قاعدة البيانات بناءً على الرمز المميز. إذا كان هناك سجل ، فسيتم إخراج اسم المستخدم ، ثم اتصل بـ UserDetailService للحصول على معلومات المستخدم بناءً على اسم المستخدم ، ثم وضعه في SecurityContext.
RememberMeAuthenticationFilter مصادقة وضع المرشح الثاني للمرشح لسلسلة المرشح في Spring Security. عندما لا يمكن المصادقة على مرشح مصادقة آخر بنجاح ، سيتم استدعاء remerveMeaUthenticationFilter لمحاولة المصادقة.
ينجز:
1. إضافة <input type="checkbox" name="remember-me" value="true"/> إلى نموذج تسجيل الدخول ، يحدد Springsecurity ثابتًا في فئة SpringSessionRememberMeServices ، والقيمة الافتراضية هي تذكر-
2. وفقًا للمخطط التخطيطي أعلاه ، تحتاج إلى تكوين TokenRepository وتخزين الرمز المميز الذي تم إنشاؤه في قاعدة البيانات. هذا تكوين فاصوليا التكوين ووضعه في متصفح SuruteeConfig
3. تكوين في التكوين
4. أضف وقت تسجيل الدخول التلقائي إلى BrowserProperties لجعلني قابل للتكوين
// تذكرني لتكوين private int remestmeseconds = 10 ؛ qihuo package com.imooc.s@configuration // هذا هو تكوين متصفح الفئة العامة يمتد COMPLESCURITYCONFIG WebSecurityConfigureRadapter {// قراءة تكوين صفحة تسجيل الدخول لتكوين المستخدم الخاص الأمنية الأمنية الخاصة ؛ // المعالج المخصص بعد تسجيل الدخول الناجح @مصادقة خاصة خاصة بـ IMOOCAUTHENTICATICATICATICATICATICASTHALDLER ؛ // معالج مخصص بعد المصادقة الفاشلة @Autowired الخاصة المصادقة الخاصة FailureHandler ImocauthenticationFailureHandler ؛ // Data Source @Autowired Private DataSource DataSource ؛ AUTOWIRED userDetailsService userDetailsService ؛ // لاحظ أنه org.springframework.security.crypto.password.passworderencoderbean publicerencoder passworddencoder () {// bcryptpassworderencoder تنفذ passwordencoder إرجاع bcryptpasswordencoder () ؛ } / *** تذكر تكوين TokenRepository الخاص بي ، قم بتنفيذها بعد تسجيل الدخول بنجاح* بعد تسجيل الدخول بنجاح ، احفظ الرمز المميز في قاعدة البيانات* description: تذكر تكوين tokenRepository* param @ @ @ @jdbctokenRepoStoryImpl* registoryrepository* throws* @auuthor perfectTokenRepository proberttokenRepository () {jdbctokenRepositoryImpl jdbctokenRepository = new jdbctokenRepositoryImpl () ؛ jdbctokenRepository.setDatasource (DataSource) ؛ // يتم إنشاء الجدول المقابل تلقائيًا عند بدء التشغيل. يمكنك تنفيذ برنامج Create_table_sql بنفسك في JDBCtokenRepositoryImpl لإنشاء الجدول jdbctokenRepository.SetCreatableOnStartup (True) ؛ إرجاع jdbctokenRepository ؛ }. // استخدم معالجة الأخطاء الخاصة بك في مرشح رمز التحقق VelateCodeFilter.SetAuthenticationFailureHandler (imoocauthenticationFailureHandler) ؛ . ValyAteCodeFilter.afterPropertiesset () ؛ // قم بتنفيذ تسجيل دخول نموذج الواجهة القفز الذي يتطلب المصادقة ، الأمان = المصادقة + إذن //http.httpbasic () // هذا هو مصادقة مربع المنبثقة الافتراضية // http // قم بتحميل مرشح رمز التحقق قبل صياغة تسجيل الدخول. configuration.formlogin () .loginPage ("/المصادقة/المتطلبات") // معالجة متصفح مصادقة المستخدمين الأمنية // مرشح تسجيل الدخول usernamepasswordauthenticationfilter url تسجيل الدخول الافتراضي هو "/تسجيل الدخول" ، والتي يمكن تغييرها هنا. .successHandler (ImoOcauthenticationationsuccessHandler) // مصادقة مخصصة postprocessor.failureHandler (imocauthenticationFailureHandler) // المعالجة بعد فشل تسجيل الدخول. tokenvaliditySeconds (SecurityProperties.getBrowser (). SecurityProperties.getBrowser (). getLogInPage (): تم تكوين المستخدم page.antmatchers (/"المصادقة/المتطلبات" ، SecurityProperties.getBrowser (). //anyrequest.authenticated () // مصادقة المصادقة مطلوبة. }} curity.browser ؛نظرًا لأنك تريد التعامل مع قاعدة البيانات ، فأنت بحاجة إلى ضخ مصدر بيانات: application.properties
spring.datasource.driver-class-name = com.mysql.jdbc.driverspring.datasource.url = jdbc: mysql: //127.0.0.1: 3306/imooc-demospring.datasource.username = rootspring.datasource.passource
بدء التطبيق ، والوصول إلى المضيف المحلي: 8080/المستخدم ، وتسجيل الدخول مطلوب
تسجيل الدخول بنجاح:
قاعدة البيانات: قم بإنشاء جدول reparent_logins وحفظ جزء من البيانات
أوقف الخدمة وابدأها مرة أخرى (التعليق على jdbcTokenRepository.setCreateTableOnStartup(true); ) لأن معلومات تسجيل الدخول المستخدم لدينا في الجلسة ، بعد إعادة تشغيل الخدمة ، يجب أن يتم إعادة تشغيلها إلى صفحة تسجيل الدخول ، ولكن لأنني قمت بتكوينها لتذكرني ، يمكنني الوصول مباشرة إلى بيانات الواجهة.
طلب رأس:
حتى الآن ، تم القيام بتذكر الأساسي
يتم وضع الرمز الكامل في github: https://github.com/lhy1234/spring-security
لخص
ما ورد أعلاه هو خدمة راحة البناء في Spring Security التي قدمها لك المحرر. تذكرنى. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!