2015-12-29 12 views
5

Tôi có một ứng dụng được viết bằng AngularJS liên hệ với API Web để xác thực qua oauth 2. Mọi thứ đang hoạt động tốt với phần cốt lõi đó, nhưng tôi cần phải chuyển các tham số bổ sung để đánh giá thông tin đăng nhập (clientID) và thiết lập chức năng nhớ kiểu tôi (nhớ).Gửi các tham số bổ sung tới mã thông báo trong API Web với oauth2 và AngularJS

Từ phía góc, nó sẽ giống như thế này:

var data = "grant_type=password&username=" + form.username + "&password=" + form.password + "&clientID=" + clientID + "&remember=" + form.remember; 

    var deferred = $q.defer(); 

    $http.post(serviceBase + 'token', data, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).success(function (response) { 

Bất kỳ suy nghĩ là cách tốt nhất để nắm bắt những giá trị một lần tôi đang xử lý thẻ qua Startup.cs và SimpleAuthorizationServerProvider.cs? Cảm ơn

Trả lời

8

Khi sử dụng GrantResourceOwnerCredentials, bạn có thể truy lục yêu cầu OWIN từ OAuthGrantResourceOwnerCredentialsContext và trích xuất thông số tùy chỉnh bạn cần bằng cách gọi ReadFormAsync().

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) 
{ 
    var form = await context.Request.ReadFormAsync(); 

    if (string.Equals(form["remember"], "true", StringComparison.OrdinalIgnoreCase)) 
    { 
     // Add custom logic to handle the "remember me" case. 
    } 
} 

Điều đó nói rằng, thêm thông số tùy chỉnh (tức là không chuẩn) thường không được khuyến khích, đặc biệt nếu chúng là bắt buộc. Lưu ý rằng bạn không cần phải sử dụng thông số clientID tùy chỉnh, vì đã có một tiêu chuẩn tương đương: client_id.

+0

Điều đó hoạt động như một sự quyến rũ. Cảm ơn sự hỗ trợ. Tôi đã bỏ qua client_id để biết điều đó. Vì vậy, nếu thêm các tham số không chuẩn được khuyến khích, bạn khuyên bạn nên chuyển giá trị true/false đó đến mức nào để đặt chức năng nhớ tôi? –

+0

IMHO, một điều "nhớ tôi" không có ý nghĩa nhiều trong thế giới tuyệt vời của các thẻ. Làm gì chính xác? – Pinpoint

+0

Tôi không phải là một fan hâm mộ lớn của tôi nhớ tính năng thực sự, nhưng khách hàng của tôi muốn nó. Về cơ bản, mã thông báo được đặt hết hạn sau 24 giờ theo mặc định và nhớ rằng tôi mở rộng giá trị hết hạn đó thành 30 ngày. –

Các vấn đề liên quan