私はプロジェクト春のブートプロジェクトを作成し、ここに示すようにRESTfulなサービスを実施しているとのメッセージなし利用できる」エラー:春ブーツ、JAX-RSとangularJS
@CrossOrigin
@RestController
@RequestMapping("/Users")
public class UsersRestController {
@RequestMapping(value="/AddUser")
public Users addUsers(Users user){
return UM.saveT(user);
}
}
AngularJS方法:
Var url ="localhost:8080/App/Users";
$scope.saveUsers = function() {
$http.post(url+"/AddUser?name="+$scope.NameUser+"&email="+$scope.emailUser)
.success(function(data) {
$scope.ListUsers = data;
$window.location.href="localhost:8080/App/AllUsers";
}).error(function(err, data) {
$scope.messag = "Add user error !!";
});
}
前ユーザーを追加するアクションを実行すると、管理者は自分のアプリケーションにアクセスするために認証する必要があります。 、私は、WebページのJSPフレームワークを使用し
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter{
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
ので、私は、JSPページを返すために、コントローラを挑ん:MvcConfig.java級
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled=true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
@Autowired
protected void globalConfig(AuthenticationManagerBuilder auth, DataSource dataSource) throws Exception {
//auth.inMemoryAuthentication().withUser("user").password("123").roles("USER");
auth.jdbcAuthentication()
.dataSource(dataSource)
.usersByUsernameQuery("select username as principal, password as credentials, etat as actived from utilisateurs where username=?")
.authoritiesByUsernameQuery("select u.username as principal, ur.nom_role as role from utilisateurs u inner join roles ur on(u.roles_id=ur.id_role) where u.username=?")
.rolePrefix("ROLE_");
}
protected void configure(HttpSecurity http) throws Exception {
http
.sessionManagement().maximumSessions(100).maxSessionsPreventsLogin(false).expiredUrl("/Login");
http
.authorizeRequests()
.antMatchers("/Users/").access("hasRole('ADMIN')")
.antMatchers("/Login").anonymous()
.anyRequest().authenticated()
.and()
.formLogin().loginPage("/Login").permitAll()
.defaultSuccessUrl("/")
.failureUrl("/Login?error=true")
.and()
.logout()
.invalidateHttpSession(true)
.clearAuthentication(true)
.logoutUrl("/logout")
.permitAll()
.logoutSuccessUrl("/Login")
.and().exceptionHandling().accessDeniedPage("/403")
.and()
.csrf();
}
:私は、この設定を行わ
@Controller
public class WebController {
@RequestMapping(value = "/Login")
public String login(){
return "login";
}
@RequestMapping(value = "/")
public String Home(){
return "index";
}
@RequestMapping(value = "/Users")
public String Users(){
return "indexUsers";
}
- ユーザー認証後、すべてのユーザーの一覧が表示されますが、新しいユーザーを追加すると、この問題が発生します。
error:"Not Found" message:"No message available" path:"/App/Users/AddUser" status:404 timestamp:1494256474299
ここでは、要求の内容:
Request URL:http://localhost:8080/App/Users/AddUser?name=Michel&[email protected]
Request Method:POST
Status Code:404
Remote Address:[::1]:8080
Referrer Policy:no-referrer-when-downgrade
**Request Headers
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Content-Type:application/json;charset=UTF-8
Date:Mon, 08 May 2017 15:14:34 GMT
Expires:0
Pragma:no-cache
Transfer-Encoding:chunked
X-Content-Type-Options:nosniff
X-Frame-Options:DENY
X-XSS-Protection:1; mode=block
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, br
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
AlexaToolbar-ALX_NS_PH:AlexaToolbar/alx-4.0.1
Connection:keep-alive
Content-Length:0
Cookie:JSESSIONID=671F3685C71CDEB58726FD1392389FA2
Host:localhost:8080
Origin:http://localhost:8080
Referer:http://localhost:8080/App/Users
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/57.0.2987.133 Safari/537.36
**Query Strings Parameters:
name=Michel
[email protected]
しかし、私は、API残ります(httpください:// localhostを:8080 /ユーザ/は、AddUserを? Name = Michel & [email protected])ユーザーはDBに追加されます。
ここで欠点を見つけるのを手助けできる人は誰ですか?
アンギュラ方法に記載されているURLは 'URL =では "localhost:8080 /アプリケーション/ユーザ"'。あなたがうまくいっていると言ったのは 'http:// localhost:8080/Users/AddUser?名前= Michel&email = michel @ gmail.com'。もしそうなら、角ベースのURLから 'App'を削除してください。 –
基本的なURLはhttp:// localhost:8080/App ** – Michael1
です@Peteさんにお詫び申し上げます。 –