asp.net mvc webapiをバックエンドとクライアント側のルーティング(cshtmlなし)として使用して、SPAのanglejsアプリケーションで認証と認可の例を作成します。以下は、完全な例を設定するために使用できる関数の例です。しかし、私はそれをすべてtogehterにすることはできません。どんな助けもありがたい。webapiを使用したAngularJSクライアント側のルーティングとトークンの認証
質問:
- のベストプラクティスは何をされています。クッキーまたはトークンベースの?
- 各リクエストで承認するために、どのように角度でベアラトークンを作成しますか?
- API関数の検証?
- クライアントで署名されたユーザーの認証を保持するにはどうすればよいですか?
例コード:
<form name="form" novalidate>
<input type="text" ng-model="user.userName" />
<input type="password" ng-model="user.password" />
<input type="submit" value="Sign In" data-ng-click="signin(user)">
</form>
認証角度コントローラ
$scope.signin = function (user) {
$http.post(uri + 'account/signin', user)
.success(function (data, status, headers, config) {
user.authenticated = true;
$rootScope.user = user;
$location.path('/');
})
.error(function (data, status, headers, config) {
alert(JSON.stringify(data));
user.authenticated = false;
$rootScope.user = {};
});
};
マイAPIバックエンドのAPIコード形式で
サインインします。コンテンツを制限するためのJWTライブラリを使用して
[HttpPost] public HttpResponseMessage SignIn(UserDataModel user) { //FormsAuthetication is just an example. Can I use OWIN Context to create a session and cookies or should I just use tokens for authentication on each request? How do I preserve the autentication signed in user on the client? if (this.ModelState.IsValid) { if (true) //perform authentication against db etc. { var response = this.Request.CreateResponse(HttpStatusCode.Created, true); FormsAuthentication.SetAuthCookie(user.UserName, false); return response; } return this.Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Invalid username or password"); } return this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, this.ModelState); }
認証 。
config.MessageHandlers.Add(new JsonWebTokenValidationHandler { Audience = "123", SymmetricKey = "456" });
私のAPIメソッド
[Authorize] public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; }
本当に素晴らしい説明です。私が探していたものです。答えと詳細な例をありがとう。 –
確かに、私は助けてうれしい:) – bernhardw
隠しIフレーム(認証サーバーが前のアクセス許可を記憶していると仮定)によってアクセストークンを更新する方法はありますか? – g18c