我需要有一个自定义中的身份验证弹簧,它应该是一个简单的类,需要用户名和密码提供一个用户,并将其一些价值观的基础上,它应该进行认证。

我们正在使用的系统在应用程序,我们登录的形式,在成功,打开了另一个网页在一个新的窗口。

这是我已经尝试迄今为止:文件:应用方面的安全性:

...
<http auto-config="true">
           <intercept-url pattern='/*Login.html' access="IS_AUTHENTICATED_ANONYMOUSLY"/>
        <intercept-url pattern='/**/*MainScreen.html' access="ROLE_ADMIN"/>   
        <form-login login-page="/Login.html"/><!-- This is the default login page -->
    </http>
<authentication-provider>
        <user-service>
            <user name="test1" password="abc" authorities="ROLE_ADMIN" />
            <user name="test2" password="test" authorities="ROLE_ADMIN" />
        </user-service>
</authentication-provider>
...

定义登陆代码(点击"确定"的按钮):

        RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.POST,"j_spring_security_check");
        requestBuilder.setHeader("Content-Type", "application/x-www-form-urlencoded");
        //-- sending the username and the password in designated fields.
        //Hard coding values for testing reasons:
        requestBuilder.setRequestData("j_username=test1" +
                        "&j_password=abc");

        requestBuilder.setCallback(new RequestCallback() {
            public void onError(Request request, Throwable exception)
            {
                Window.alert("ERROR !!!"+exception.getMessage());
            }
            public void onResponseReceived(Request request, Response response)
            {
                if (response.getStatusCode() != Response.SC_UNAUTHORIZED && response.getStatusCode() != Response.SC_OK)
                { 
                    onError(request, new RequestException(response.getStatusText() + ":\n" + response.getText())); 
                    return; 
                }

                if (response.getStatusCode() == Response.SC_UNAUTHORIZED)
                { 
                    //This code is never encountered !! :((
                    Window.alert("You have entered an incorrect username or password. Please try again."); 
                }
                else
                { 
                    String height = 800+"";
                    String width = 600+"";

                    Window.alert("Authorisation succeeded, you may enter....");
                    Window.open("MainScreen.html", "Main screen!!", "height=" + height + ",width=" + width
                                    + ",scrollbars=yes,resizable=yes,titlebar=no,toolbar=no,status=yes,close=no,left=0,top=0");
                } 

            }
        });
        requestBuilder.send();

问题:

  1. 不正确的登录:它显示了成功,打开了弹含有登陆屏幕上!(显然登录没有成功,但登陆屏幕上无法检测)
  2. 我不想要硬代码的价值在认证提供者,是否有另一种方式,这样我提供我自己的课吗?我试了几教程,但是徒劳的,他们都似乎指向我允许春天来做这项工作的比较,通过一个数据库或一些其他种类的文件,我不能做我自己?
有帮助吗?

解决方案

我听起来就像你需要自己编写即userdetailsservice。这是弹簧的安全接口,其中填充的信。getPrincipal()与UserDetails.如果,通过结束安全过滤器链此目尚未填充的然后春季会扔授权例外,它可能陷和用户可以被重新定向到另一个网页/应用程序的一部分。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top