سيناريوهات التطبيق
في الآونة الأخيرة ، هناك دائمًا أشخاص في المجتمع الذين نشروا مقالات مع إعلانات صغيرة ، والتي تؤثر بشكل خطير على جو المجتمع. أنا غاضب جدا! لهذا النوع من المستخدمين ، يجب حظره بشكل دائم!
يستخدم إطار العمل الأمني للمجتمع الأمن الربيعي والجلس الربيعي ، وحالة تسجيل الدخول صالحة لمدة 30 يومًا. معلومات الجلسة موجودة في redis. كيف تتعامل مع هؤلاء المستخدمين غير الشريفين بأمان؟
أولاً ، قم ببساطة بتقسيم أذونات المستخدم:
بعد ذلك ، قم بحظر المستخدم المحدد (rob_user -> rob_black) وإجبار المستخدم على الخروج (حذف معلومات جلسة المستخدم في Redis).
التبعيات والتكوين المتعلقة بالمشروع
تبعيات مافن
<!-Security-> <reperency> <roupiD> org.springframework.boot </groupId> <Stifactid> Spring-boot-starter-security </stifactid> </sependency> <!-dreies-> <sperency> <roupencid> org.springframework <Stifactid> Spring-Boot-Starter-Data-Redis </shintifactid> </sependency> <!-إعادة تجهيزات الربيع-> <reperency> <roupiD> org.springframework.session </groupid> <Stifactid>
تطبيق تكوين سياسة جلسة الربيع.
# حذف تكوين اتصال Redis هنا الربيع: الجلسة: نوع المتجر: redis
نموذج رمز تكوين أمان الربيع
enableWebSecurityPublic Class Class WebSecurityConfig يمتد WebSecurityConfigureRadapter {Override Contected void config (httpsecurity http) يلقي استثناء {http .AuthorizereQuests () .antmatchers ("/user/** .antmatchers ("/manager/**"). hasanyrole (roleenum.manager.getMessage ()) .anyrequest (). permanall (). و (). formlogin (). loginPage ("/login"). }}الخروج القسري تعيين لواجهة المستخدم
استيراد com.spring4all.bean.responsebean ؛ استيراد com.spring4all.service.userservice ؛ استيراد lombok.allargsconstructor ؛ استيراد org.springframework.session.findbyindexnamesessionRepository org.springframework.session.data.redis.redisprationssessionRepository ؛ استيراد org.springframework.web.bind.antmapping org.springframework.web.bind.annotation.restController ؛ استيراد java.util.arraylist ؛ استيراد java.util.list ؛ استيراد java.util.map ؛@restController@allargsconstructorpublic usermanageapi يمتد الجلسة> SessionRepository ؛ redisoperationssessionSessionRepository redisoperationssessionRepository ؛ uservicevice uservice ustervice الخاصين ؛ /*: تنفيذ string indexName = userService.getPrincipalNameIndExName (userId) ؛ // استعلام معلومات جلسة المستخدم ، مفتاح قيمة الإرجاع هو خريطة SessionId <String ،؟ يمتد الجلسة> المستخدمين = SessionRepository.FindByIndExnameAndIndExvalue (FindByIndExNamesessionRepository.principal_name_index_name ، indexname) ؛ // قم بإزالة قائمة معلومات جلسة المستخدم <string> SessionIds = new ArrayList <> (userSessionS.KeySet ()) ؛ لـ (جلسة السلسلة: SessionIds) {redisoperationssessionRepository.DeleteById (الجلسة) ؛ } return responseBean.Success (userSessions) ؛ }} الوصف indexName هو قيمة إرجاع principal.getName ().
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.