Tôi đang viết một ứng dụng Angular 4 cần lấy một số dữ liệu từ Asp.Net WebApi. Chúng tôi đang sử dụng xác thực cửa sổ cho WebAPI và tôi tự hỏi làm cách nào tôi có thể chuyển danh tính cửa sổ của người dùng từ Ứng dụng góc của tôi sang WebApi. Tôi đã tìm thấy vài ví dụ liên quan đến việc lồng ghép ứng dụng của bạn với ứng dụng MVC nhưng tôi sẽ giữ giao diện người dùng khỏi MVC. Có cách nào để làm điều đó mà không cần thêm mvc .net vào trang web Angular của tôi?Xác thực Windows và ứng dụng Angular 4
Trả lời
Khi bạn gửi yêu cầu http của bạn từ góc để WebAPI của bạn, bạn cần phải sử dụng RequestOptions ({withCredentials = true})
Dưới đây là một dịch vụ bảo vệ mẫu mà các cuộc gọi một api
@Injectable()
export class SecurityService {
private baseUrl = 'http://localhost:64706/api/security/';
private auth: Auth;
private options = new RequestOptions({ withCredentials: true });
constructor(private http: Http) {
console.log('Creating Service');
console.log('Service Pre Http');
this.http.get(this.baseUrl, this.options)
.map((res) => this.extractData<Auth>(res))
.subscribe(newItem => {
console.log('Service Subscribe');
this.auth = newItem;
})
}
public isUser(): Observable<boolean> | boolean {
if (!this.auth) {
return this.http.get(this.baseUrl, this.options)
.map(res => {
this.auth = this.extractData<Auth>(res);
return this.auth.isUser;
});
}
else {
return this.auth.isUser;
}
}
private extractData<T>(res: Response) {
if (res.status < 200 || res.status >= 300) {
throw new Error('Bad response status: ' + res.status);
}
const body = res.json ? res.json() : null;
return <T>(body || {});
}
}
Đây là lớp auth
export class Auth {
isAdmin: boolean;
isUser: boolean;
}
Nếu bạn đang sử dụng .net cốt lõi sau đó trong điều khiển WebAPI của bạn bây giờ bạn có thể truy cập this.User.Identity.IsAuthenticated
NB: Nếu bạn đang sử dụng ASP.Net Lõi 2.0 thì bạn cần phải làm theo các "Windows Authentication (HTTP.sys/IISIntegration)" phần đây https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x
Bạn cũng phải nhớ để kích hoạt Windows Xác thực trên máy chủ, ví dụ IIS hoặc IISExpress.
Bạn có thể sẽ cần phải kích hoạt CORS tài liệu ở đây là tốt: https://docs.microsoft.com/en-us/aspnet/core/security/cors
Nếu bạn nhận được lỗi xung quanh "kiểm tra preflight" sau đó bạn cũng sẽ cần phải kích hoạt Anonymous Access
bạn đã nói trong câu trả lời của bạn "IIS hoặc IISExpress". Bạn đã thử IISExpress và nó đã hoạt động chưa? Bởi vì tôi có và tôi không thể làm cho nó hoạt động – Dan
Có, cả hai đều sử dụng Chrome. Trình duyệt nào đã thử? –
Chỉ Internet Explorer. Đó là trình duyệt chính cần được hỗ trợ. Tôi sẽ thử Chrome để xem nó có hoạt động không – Dan
- 1. angular-cli và bootstrap 4
- 2. Xác thực ứng dụng khách SSL trong Android 4.x
- 3. Ứng dụng MVC lõi Asp.Net Xác thực Windows trong IIS
- 4. Góc 4 cho phép xác thực HTML5
- 5. Sử dụng Chart.js trên Angular 4
- 6. Angular 4 Nuget Package
- 7. Xác thực Windows SSPI và SQL Server
- 8. Xác thực Windows Watin
- 9. Xác thực hơi nước với Angular
- 10. xác thực pymssql windows
- 11. Tại sao Angular 3 bỏ qua, và những khác biệt chính trong Angular 4 beta
- 12. Ứng dụng di động sử dụng Angular JS
- 13. Angular 4 Implicit Flow Callback và Router Guard
- 14. Angular 4 HttpClient Query Parameters
- 15. Xác thực Windows cho các ứng dụng web dựa trên Java, Cách thực hiện?
- 16. Xác thực Windows trong .NET
- 17. Nhận thông tin người dùng Active Directory với xác thực Windows trong MVC 4
- 18. "OAuthException", "message": "Lỗi xác thực ứng dụng".
- 19. Laravel 4 Xác thực đa người dùng
- 20. Xác thực Windows thủ công
- 21. Xác thực và ủy quyền biểu mẫu MVC 4
- 22. Lấy thông tin xác thực mạng từ người dùng hiện tại trong ứng dụng xác thực Windows
- 23. Xác thực và ủy quyền ứng dụng với JWT
- 24. Xác thực ứng dụng khách WSDL và nhiều Certs
- 25. Visual Studio 2015 vNext và Xác thực Windows
- 26. Getter và Setter của đối tượng Model trong Angular 4
- 27. Websocket trong Angular 4 và RxJS nhầm lẫn
- 28. bật Xác thực Windows trong Windows 8.1
- 29. JMeter với Xác thực Windows?
- 30. Chiến lược mẫu tốt để xác thực trong Angular 2
Có lẽ liên kết đó sẽ giúp bạn : https://stackoverflow.com/questions/41337145/how-can-i-get-and-post-an-action-using-angular-2-in-mvc/41341743#41341743 –
Từ những gì tôi có thể thấy là họ đang sử dụng xác thực thông thường. Tôi muốn sử dụng Windows Authentication – AlexanderM
@AlexanderM là câu hỏi này có được trả lời đúng không? Nếu có, vui lòng đánh dấu câu trả lời. – RayLoveless