Foydalanuvchining tizimga kirganligini qanday bilish mumkin (GSPda)

Menda sahifani ko'rsatadigan index.gsp bor. Bu sahifada roʻyxatdan oʻtish tugmasi va tizimga kirish tugmasi mavjud. Tizimga kirganingizdan soʻng, agar login yaxshi boʻlsa, ilova sizni yana index.gsp ga olib boradi. Menga kerak, agar foydalanuvchi tizimga kirgan bo'lsa, bu tugmalar yo'qoladi va o'rniga "Salom, [foydalanuvchi nomi]" deb ayting. Men ushbu kod bilan sinab ko'rdim, lekin u ishlamayapti (u hech qachon tizimga kirmagan):

Tekshirgichda:

def dologin(){

    def user=Usuario.findByUsernameAndPassword(params.username,springSecurityService.encodePassword(params.password) )

    if(user){
        redirect (controller:'usuario', action:'index')
    }else{

        flash.message=message(code:'default.user.not.found', args:[message(code: 'params.username', default:'Usuario'), params.id])
    def userlogged = springSecurityService.getCurrentUser()
                render view: 'index', model: [user: user]
}

}

index.gsp da (to'liq emas, faqat muhim bo'lak):

<sec:ifNotLoggedIn>

<div id="buttons">
    <div id="login"><a href="/uzloginurl">Login</a>
    </div>
    <div id="register"><a href="/uzregisterurl">Registrarse</a>
    </div>
</div>
</sec:ifNotLoggedIn>
<sec:ifLoggedIn>

<div id="greet">Hello!</div> 

</sec:ifLoggedIn>

Har qanday yordam minnatdor bo'ladi.

Rahmat.


person Fustigador    schedule 19.07.2012    source manba


Javoblar (3)


Bahorgi xavfsizlik autentifikatsiya jarayonidan o‘tmasdan, o‘z autentifikatsiyangizni amalga oshirayotganga o‘xshaysiz. <sec:ifLoggedIn> yorlig'i autentifikatsiyani boshqarish uchun bahor xavfsizligiga tayanadi.

Buni bahorgi xavfsizlik ilovasida hal qilishning odatiy usuli /j_spring_security_check ga kirish soʻrovini yuborishdir, u parda ortida UsernamePasswordAuthenticationFilter.

Grails va bahor xavfsizlik plagini siz boshlang'ich nuqtasi sifatida foydalanishingiz mumkin bo'lgan LoginController va auth.gsp ni taqdim etish orqali buni nisbatan og'riqsiz qiladi. s2-quickstart skriptini ishga tushiring (bu foydalanuvchi va rol domeni obyektlarini ham yaratadi) yoki ularni spring-security-core andozalar katalogidan nusxalash kifoya.

person ataylor    schedule 19.07.2012
comment
<sec:ifLoggedIn> uchun boshqa teg bormi? - person styl3r; 07.10.2017
comment
@styl3r Men boshqa teg yo'q deb o'ylamayman. <sec:ifNotLoggedIn> inkor qilingan tegdan foydalaning. - person David Ferenczy Rogožan; 15.07.2019

Men buni oddiygina sinab ko'rdim

<sec:ifNotLoggedIn> // DO SOMTHING</sec:ifNotLoggedIn>
<sec:ifLoggedIn> // DO SOMTHING</sec:ifNotLoggedIn>
person asroboy    schedule 18.01.2018

Nihoyat, buni oddiy qildi

<g:if test="${session.user==null}">
<!-- Display buttons-->
</g:if>
<g:if test=${session.user!=null">
    <div id="greet"> Hello, ${session.user.username}!</div>
</g:if>

Osonroq, menimcha. Lekin javobingiz uchun rahmat, ataylor.

person Fustigador    schedule 20.07.2012